-- CurveDefs.mesa -- Communications Defs file for Spline Fitting program -- Maureen Stone 13-Jan-82 16:05:09 DIRECTORY Rope USING [ROPE], Vector USING [Vec], Cubic USING [Bezier]; CurveDefs: DEFINITIONS = BEGIN SampleHandle: TYPE = REF Sample; SListHandle: TYPE = REF SList; ContourHandle: TYPE = REF Contour; LinkHandle: TYPE = REF Link; TrajHandle: TYPE = REF Traj; SV: TYPE = RECORD[s: REAL, v: REAL]; ValueSeq: TYPE = RECORD [s: SEQUENCE l:NAT OF SV]; Values: TYPE = REF ValueSeq; Sample: TYPE = RECORD [next: SampleHandle _ NIL, prev: SampleHandle _ NIL, xy: Vector.Vec _ [0,0], s: REAL _ 0, value: REAL ]; -- sample is a data point. xy is the [x,y] position of the point -- s is arc length, and may be relative to start in an SList -- values are interesting values computed at each sample. SList: TYPE = RECORD [next: SListHandle _ NIL, prev: SListHandle _ NIL, nsamples: INTEGER _ 0, arcLen: REAL _ 0, samples: SampleHandle _ NIL, lastSample: SampleHandle _ NIL, closed: BOOLEAN _ FALSE ]; -- SList is a list of Samples. Contour: TYPE = RECORD [next: ContourHandle _ NIL, prev: ContourHandle _ NIL, sLists: SListHandle _ NIL, lastSList: SListHandle _ NIL ]; -- Contour is a list of SLists which form a closed trajectory. Link: TYPE = RECORD [next: LinkHandle _ NIL, prev: LinkHandle _ NIL, cubic: Cubic.Bezier ]; -- a link is either a cubic or a straight line. Lines will have b1=b2=b3 Traj: TYPE = RECORD [next: TrajHandle _ NIL, prev: TrajHandle _ NIL, links: LinkHandle _ NIL, lastLink: LinkHandle _ NIL ]; -- a Traj (trajectory) is a sequence of links which may form a closed contour --From FitCubics FitSpline: PUBLIC PROCEDURE[samples: SampleHandle, npieces: INTEGER _ 1000] RETURNS[LinkHandle]; DrawLink: PUBLIC PROC [link: LinkHandle]; --From Analyze AnalyzeContour: PROCEDURE[points: ContourHandle]; -- From CurveFitIO OpenFile: PROC [file: Rope.ROPE]; CloseFile: PROC; WriteSamples: PROC[samples: SampleHandle]; WriteContour: PROC[contour: ContourHandle, s: REAL, t: Vector.Vec]; WriteTraj: PROCEDURE[t: TrajHandle, first: BOOLEAN _ FALSE]; ContourMain: PROGRAM; Analyze: PROGRAM; FitCubics: PROGRAM; CurveFitIO: PROGRAM; END.