<> <> <> <> DIRECTORY IO, Matrix3d, Rope, Vector3d; Spline3d: CEDAR DEFINITIONS ~ BEGIN <> Matrix: TYPE ~ Matrix3d.Matrix; Pair: TYPE ~ Matrix3d.Pair; Line: TYPE ~ Vector3d.Line; Triple: TYPE ~ Vector3d.Triple; TripleSequence: TYPE ~ REF TripleSequenceRec; TripleSequenceRec: TYPE ~ RECORD [element: SEQUENCE maxLength: NAT OF Triple]; RealSequence: TYPE ~ REF RealSequenceRec; RealSequenceRec: TYPE ~ RECORD [element: SEQUENCE maxLength: NAT OF REAL]; KnotSequence: TYPE ~ REF KnotSequenceRep; KnotSequenceRep: TYPE ~ RECORD [ length: NAT _ 0, element: SEQUENCE maxLength: NAT OF Triple ]; Bezier: TYPE ~ RECORD [b0, b1, b2, b3: Triple]; Bspline: TYPE ~ RECORD [b0, b1, b2, b3: Triple]; Hermite: TYPE ~ RECORD [p0, p1, tan0, tan1: Triple]; <> <> <> <<>> Coeffs: TYPE ~ Matrix; CoeffsRep: TYPE ~ Matrix3d.MatrixRep; CoeffsSequence: TYPE ~ REF CoeffsSequenceRec; CoeffsSequenceRec: TYPE ~ RECORD [element: SEQUENCE maxLength: NAT OF Coeffs]; TPos: TYPE ~ RECORD [t: REAL, p: Triple]; TPosSequence: TYPE ~ REF TPosSequenceRec; TPosSequenceRec: TYPE ~ RECORD [element: SEQUENCE maxLength: NAT OF TPos]; <> InterpolateCyclic: PUBLIC PROC [knots: KnotSequence, tension: REAL _ 1.0] RETURNS [CoeffsSequence]; <> <> <<>> Interpolate: PROC [knots: KnotSequence, tan0, tan1: Triple _ [0.0, 0.0, 0.0], tension: REAL _ 1.0, coeffs: CoeffsSequence _ NIL] RETURNS [CoeffsSequence]; <> <> <> CoeffsFromBezier: PROC [b: Bezier, out: Coeffs _ NIL] RETURNS [Coeffs]; <> CoeffsFromBspline: PROC [b: Bspline, out: Coeffs _ NIL] RETURNS [Coeffs]; <> <<>> CoeffsFromHermite: PROC [h: Hermite, out: Coeffs _ NIL] RETURNS [Coeffs]; <> <<>> BezierFromCoeffs: PROC [c: Coeffs] RETURNS [Bezier]; <> <<>> BsplineFromCoeffs: PROC [c: Coeffs] RETURNS [Bspline]; <> HermiteFromCoeffs: PROC [c: Coeffs] RETURNS [Hermite]; <> <> PerPointProc: TYPE = PROC [p: Triple]; WalkBezier: PROC [b: Bezier, proc: PerPointProc, epsilon: REAL _ 0.05, doLast: BOOL _ TRUE]; <> <> <> FwdDif: PROC [in: Coeffs, nSegments: INTEGER, out: Coeffs _ NIL] RETURNS [Coeffs]; <> Samples: PROC [c: Coeffs, nPoints: INTEGER, points: TripleSequence _ NIL] RETURNS [TripleSequence]; <> Position: PROC [c: Coeffs, t: REAL] RETURNS [Triple]; <> Velocity: PROC [c: Coeffs, t: REAL] RETURNS [Triple]; <> Acceleration: PROC [c: Coeffs, t: REAL] RETURNS [Triple]; <> Tangent: PROC [c: Coeffs, t: REAL] RETURNS [Triple]; <> <<>> MinAcceleration: PROC [c: Spline3d.Coeffs] RETURNS [t: REAL]; <> <<>> CurvatureMag: PROC [c: Coeffs, t: REAL] RETURNS [REAL]; <> <<>> Curvature: PROC [c: Coeffs, t: REAL] RETURNS [Triple]; <> <<>> RefVec: PROC [c: Coeffs, t: REAL] RETURNS [Triple]; <> <> Length: PROC [c: Coeffs] RETURNS [REAL]; <> ConvexHullArea: PROC [b: Bezier] RETURNS [REAL]; <> ConvexHullLength: PUBLIC PROC [b: Bezier] RETURNS [REAL]; <> <<>> FlatBezier: PROC [b: Bezier, epsilon: REAL _ 0.05] RETURNS [BOOL]; <> <> Tiny: PROC [c: Coeffs, epsilon: REAL _ 0.05] RETURNS [BOOL]; <> Resolution: PROC [c: Coeffs, epsilon: REAL] RETURNS [INTEGER]; <> <> NearestPoint: PROC [p: Triple, c: Coeffs, t0: REAL _ 0.0, t1: REAL _ 1.0, epsilon: REAL _ 0.01] RETURNS [cPt: Triple, t, dist: REAL]; <> <<>> NearestPair: PROC [p: Pair, c: Coeffs, persp: BOOL _ FALSE, t0: REAL _ 0.0, t1: REAL _ 1.0] RETURNS [pRet: Pair, t, dist: REAL]; <> <<>> NearestLine: PROC [line: Line, c: Coeffs, t0: REAL _ 0.0, t1: REAL _ 1.0, epsilon: REAL _ 0.01] RETURNS [cPt, lPt: Triple, t, dist: REAL]; <> <<>> NearestSpline: PROC [c1, c2: Coeffs, epsilon: REAL _ 0.01] RETURNS [t1, t2: REAL]; <> <> <<>> FurthestPoint: PROC [c: Coeffs] RETURNS [p: Triple, t, dist: REAL]; <> <> SplitCurve: PROC [c: Coeffs, out1, out2: Coeffs _ NIL] RETURNS [c1, c2: Coeffs]; <> <> SplitBezier: PROC [b: Bezier] RETURNS [b1, b2: Bezier]; <> Subdivide: PROC [c: Coeffs, t: REAL] RETURNS [c1, c2: Coeffs]; <> Reparameterize: PROC [in: Coeffs, t0, t1: REAL, out: Coeffs _ NIL] RETURNS [Coeffs]; <> <> Tame: PROC [in: Coeffs, out: Coeffs _ NIL] RETURNS [Coeffs]; <> Same: PROC [c1, c2: Coeffs] RETURNS [BOOL]; <> <<>> DebugStream: PROC [stream: IO.STREAM]; <> <<>> DebugView: PROC [view: Coeffs]; <> <<>> <<>> END. .. <> <>