<> <> <> <<>> <> <<>> DIRECTORY Cubic2 USING [Bezier], Imager USING [VEC], ImagerTransformation USING [Transformation]; CharacterizeCubic: CEDAR DEFINITIONS ~ BEGIN Bezier: TYPE ~ Cubic2.Bezier; VEC: TYPE ~ Imager.VEC; Type: TYPE ~ {vanilla, loop, cusp, singleInflection, doubleInflection, degenerate}; <> <<>> GetType: PROC [bezier: Bezier] RETURNS [Type]; <> <<>> GetTypeFromMapped: PROC [pt: VEC] RETURNS [Type]; <> <<>> GetCanonicalPoint: PROC [bezier: Bezier] RETURNS [pt: VEC]; <> SixPoints: PROC[from0,from1, from2, to0, to1, to2: VEC] RETURNS[transform: ImagerTransformation.Transformation]; <> Colinear: SIGNAL; << Signalled if SixPoints can't construct a transformation>> <<>> <<>> END.