--m.stone February 19, 1980 5:20 PM -- Last Edited by: Stone, March 15, 1983 3:26 pm SplineDefs: DEFINITIONS = BEGIN X: INTEGER = 1; Y: INTEGER = 2; NDIM: INTEGER = Y; --points in object space FPCoords: TYPE = ARRAY [X..NDIM] OF REAL; --points in screen space ScrPt: TYPE = ARRAY [X..NDIM] OF INTEGER; Coeffs: TYPE = RECORD [t3: FPCoords, t2: FPCoords, t1: FPCoords, t0: FPCoords]; CoeffsSequence: TYPE = REF CoeffsSequenceRec; CoeffsSequenceRec: TYPE = RECORD[element: SEQUENCE length:NAT OF Coeffs]; KnotSequence: TYPE = REF KnotSequenceRec; KnotSequenceRec: TYPE = RECORD[element: SEQUENCE length:NAT OF FPCoords]; SplineType: TYPE = --global splines {naturalUM,cyclicUM,naturalAL,cyclicAL, --special case cubic curves bezier,bsplineInterp, --local splines bspline,crspline}; TooFewKnots: SIGNAL[numknots: INTEGER] ; UnknownSpline: SIGNAL[splineType: SplineType] ; UnmatchedEnds: SIGNAL ; NoInitSplines: SIGNAL ; MakeSpline: PROCEDURE [knots: KnotSequence, splineType: SplineType] RETURNS [CoeffsSequence]; DisplayCubic: PROCEDURE [coeffs: Coeffs, MoveTo: PROCEDURE[ScrPt], DrawTo: PROCEDURE[ScrPt]]; END.