This module computes a list of similitude invariant codes that represent locally a curve.

More precisely speaking, the inflexion, flat, and bitangent points (resp. IP, FP and BP) of the curve are first computed, each one is associated with a direction $({\cal D})$. This direction is either the tangent to IP and FP, or the bitangent to BP.

Then a similitude invariant frame is defined for every IP, FP and BP: the two perpendiculars (${\cal P}_1$ and ${\cal P}_2$) to the previous direction which are tangent to the curve are drawn (we get the first by making progress in a direction, the second in the opposite direction). Their intersections $R_1$ and $R_2$ with ${\cal D}$ are two points which define a similitude invariant frame.

To end with, a piece of the curve is encoded. Let us consider the arc of length $\| R_1R_2 \ \times \mbox{FNorm}$ whose center point is the intersection of the curve and the median of the segment $[R_1,R_2]$. The coordinates of $\mbox{NNorm}$ equidistant points lying on this arc are computed in the similitude invariant frame. These $\mbox{NNorm}$ points encode locally the curve.

\medskip

Each code is stored in an Flist structure, whose data field contains the following informations: number of the curve, indices of both limits of the encoded arc in the initial curve, coordinates of the central point of the arc, indices of both points of the curve surrounding the central point, coordinates of $R_1$ and $R_2$, and sampling step. The data field is useful for postprocessing.

The result is the collection of these codes stored in an Flists structure.

\medskip

For more details, see J.-L. Lisani's PhD dissertation~\cite{lisani:comparaison} 
or~\cite{lisani.monasse.ea:on}.