CubicSplinePackageDoc.tioga
Maureen Stone, January 18, 1988 5:38:20 pm PST
Stone, June 29, 1985 1:17:38 pm PDT
Bier, February 6, 1989 4:43:36 pm PST
CubicSplinePackage
CEDAR 6.0 — FOR INTERNAL XEROX USE ONLY
CubicSplinePackage
2-D cubic splines
Maureen Stone
© Copyright 1985 Xerox Corporation. All rights reserved.
Abstract: A collection of 2-D cubic spline routines. Supports all the curve types in Griffin. Cubic2 replaces CGCubic as a set of simple routines for dealing with parametric cubics.
Created by: Maureen Stone
Maintained by: Maureen Stone <Stone.pa>
Keywords: splines, cubics
XEROX  Xerox Corporation
   Palo Alto Research Center
   3333 Coyote Hill Road
   Palo Alto, California 94304

For Internal Xerox Use Only
1. Cubic2.mesa
Cubic2.mesa is a simple interface for manipulating parametric cubics. It supplies procedures to convert between Bezier and coefficient representation, perform Bezier subdivision and provides a flatness test. It provides the same functionallity as CGCubic, which was implemented by CedarGraphics.
2. CubicSplines.mesa
CubicSplines is a venerable old collection of spline routines for Griffin. The interface converts a sequence of control points to a sequence of cubic pieces (a spline) for the following types of constructions: Interpolating with unit parameterization (naturalUM), Interpolating with chord-length parameterization (naturalAL), Bezier, BSpline and Catmull-Rom splines.
The principal client of this package is Griffin, so the TYPEs are designed to match Griffin. As we develop the next generation of illustrators, this package will evolve. I would appreciate anyone who becomes a client of CubicSplines to please notify me. (Stone.pa)
This package replaces SplineDefs and SplinePkg.
3. CubicPaths.mesa
CubicPaths provides a simple interface between CubicSplines and the Imager with a few extra useful routines thrown in. A CubicPaths.Path is a sequence of Bezier cubics. A path can be enumerated (as for a PathProc), transformed, hit tested and "walked". A walk of a path calls a procedure for every point on the path.
Faster hit testing is now available in CubicPathsExtras.
4. CharacterizeCubic.mesa
CharacterizeCubic provides an efficient way to tell if a parametric cubic has a loop, cusp, or inflection points. This interface operates on the Bezier representation of the cubic curve. The first three control points are used to construct an affine transformation which maps the curve into a canonical form (b0, b1, b2 goes to [0,0], [0,1], [1,1]). The position of the fourth point characterizes the curve. The procedure GetType performs this set of operations.
In some applications it will be more efficient to factor this operation into the transformation and the characterization. The procedures SixPoints, GetCanonicalPoint and GetTypeFromMapped contruct the transformation, map the point, and perform the characterization, respectively.