<> <> <> DIRECTORY Vector2; Vector3d: CEDAR DEFINITIONS ~ BEGIN <> <> RealSequence: TYPE ~ REF RealSequenceRep; RealSequenceRep: TYPE ~ RECORD [ length: CARDINAL _ 0, element: SEQUENCE maxLength: CARDINAL OF REAL ]; Pair: TYPE ~ Vector2.VEC; PairSequence: TYPE ~ REF PairSequenceRep; PairSequenceRep: TYPE ~ RECORD [ length: CARDINAL _ 0, element: SEQUENCE maxLength: CARDINAL OF Pair ]; Triple: TYPE ~ RECORD [x, y, z: REAL]; TripleSequence: TYPE ~ REF TripleSequenceRep; TripleSequenceRep: TYPE ~ RECORD [ length: CARDINAL _ 0, element: SEQUENCE maxLength: CARDINAL OF Triple ]; Quad: TYPE ~ RECORD [x, y, z, w: REAL]; Line: TYPE ~ RECORD [base, axis: Triple]; MinMax: TYPE ~ RECORD [min, max: Triple]; origin: Triple ~ [0.0, 0.0, 0.0]; xAxis: Triple ~ [1.0, 0.0, 0.0]; yAxis: Triple ~ [0.0, 1.0, 0.0]; zAxis: Triple ~ [0.0, 0.0, 1.0]; <> Null: PROC [v: Triple] RETURNS [BOOL]; <> Negate: PROC [v: Triple] RETURNS [Triple]; <> Normalize: PROC [v: Triple] RETURNS [Triple]; <> Unitize: PROC [v: Triple] RETURNS [Triple]; <> <<>> Mul: PROC [v: Triple, s: REAL] RETURNS [Triple]; <> <<>> Div: PROC [v: Triple, s: REAL] RETURNS [Triple]; <> <> Add: PROC [v1, v2: Triple] RETURNS [Triple]; <> Sub: PROC [v1, v2: Triple] RETURNS [Triple]; <> Equal: PROC [v1, v2: Triple, epsilon: REAL _ 0.001] RETURNS [BOOL]; <> Dot: PROC [v1, v2: Triple] RETURNS [REAL]; <> Cross: PROC [v1, v2: Triple] RETURNS [Triple]; <> Average: PROC [v1: Triple, v2: Triple] RETURNS [Triple]; <> <<>> Combine: PROC [v1: Triple, s1: REAL, v2: Triple, s2: REAL] RETURNS [Triple]; <> <<>> Ray: PROC [l: Line, d: REAL] RETURNS [Triple]; <> <<>> MulVectors: PROC [v1, v2: Triple] RETURNS [Triple]; <> <<>> DivVectors: PROC [v1, v2: Triple] RETURNS [Triple]; <> <> Length: PROC [v: Triple] RETURNS [REAL]; <> SquareLength: PROC [v: Triple] RETURNS [REAL]; <> Distance: PROC [p1, p2: Triple] RETURNS [REAL]; <> SquareDistance: PROC [p1, p2: Triple] RETURNS [REAL]; <> <<>> SameLength: PROC [v1, v2: Triple] RETURNS [Triple]; <> <> Collinear: PROC [p1, p2, p3: Triple, epsilon: REAL _ 0.01] RETURNS [BOOL]; <> VecsCoplanar: PROC [v1, v2, v3: Triple, epsilon: REAL _ 0.005] RETURNS [BOOL]; <> PsCoplanar: PROC [p1, p2, p3, p4: Triple, epsilon: REAL _ 0.005] RETURNS [BOOL]; <> <<>> Parallel: PROC [v1, v2: Triple, epsilon: REAL _ 0.005] RETURNS [BOOL]; <> Perpendicular: PROC [v1, v2: Triple, epsilon: REAL _ 0.005] RETURNS [BOOL]; <> <> LinePoint: PROC [p: Triple, l: Line] RETURNS [Triple]; <> Project: PROC [v1, v2: Triple] RETURNS [Triple]; <> <<>> PtOnLine: PROC [p: Triple, l: Line, epsilon: REAL _ 0.005] RETURNS [BOOL]; <> <> V90: PROC [v0, v1: Triple] RETURNS [Triple]; <> <<>> Ortho: PROC [v: Triple, crosser: Triple _ [0.0, 0.0, 1.0]] RETURNS [Triple]; <> <> RotateAbout: PROC [v, axis: Triple, a: REAL, degrees: BOOL _ TRUE] RETURNS [Triple]; <> <> PolarFromCartesian: PROC [cartesian: Triple] RETURNS [Triple]; <> <> <<>> CartesianFromPolar: PROC [polar: Triple] RETURNS [Triple]; <> <> <> CopyRealSequence: PROC [reals: RealSequence] RETURNS [RealSequence]; <> <<>> CopyPairSequence: PROC [pairs: PairSequence] RETURNS [PairSequence]; <> <<>> CopyTripleSequence: PROC [triples: TripleSequence] RETURNS [TripleSequence]; <> <> ArcCos: PROC [cos: REAL, degrees: BOOL _ TRUE] RETURNS [REAL]; <> <<>> CosineBetween: PROC [v0, v1: Triple] RETURNS [REAL]; <> <<>> AngleBetween: PROC [v0, v1: Triple, degrees: BOOL _ TRUE] RETURNS [REAL]; <> <<>> MinMaxOfTriples: PROC [triples: TripleSequence] RETURNS [MinMax]; <> <<>> END.