CubicSplines: CEDAR DEFINITIONS = BEGIN X: NAT = 1; Y: NAT = 2; NDIM: NAT = Y; FPCoords: TYPE = ARRAY [X..NDIM] OF REAL; ScrPt: TYPE = ARRAY [X..NDIM] OF REAL; 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 = {naturalUM,cyclicUM,naturalAL,cyclicAL, bezier,bsplineInterp, 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], tol: REAL _ 0.5]; END. ¼m.stone February 19, 1980 5:20 PM Last Edited by: Stone, March 15, 1983 3:26 pm points in object space points in screen space global splines special case cubic curves local splines ÊÚ˜J˜Jšœ"™"Jšœ-™-J˜JšœÏkœ˜'Jšœœ˜ Jšœœ˜ Jšœœ˜Jšœ™Jš œ œœœœœ˜)Jšœ™Jš œœœœœœ˜&šœœ˜˜J˜ J˜ J˜J˜——Jšœœœ˜-Jš œœœ œœœ ˜IJšœœœ˜)Jš œœœ œœœ ˜IJ˜Jšœ œ˜šœ™J˜'—šœ™J˜—šœ ™ J˜—J˜Jšœ œ œ˜(Jšœœ˜/Jšœœ˜Jšœœ˜J˜šÏn œ ˜Jšœ.œ˜H—J˜šž œ ˜J˜Jšžœ œ ˜Jšžœ œ˜Jšœœ˜—J˜Jšœ˜J˜J˜—…—¬B