<> <> <> <<>> <> <> <> <<>> <> <> <<>> DIRECTORY Vector3d; Matrix3d: CEDAR DEFINITIONS ~ BEGIN Pair: TYPE ~ Vector3d.Pair; Triple: TYPE ~ Vector3d.Triple; Quad: TYPE ~ Vector3d.Quad; origin: Triple ~ Vector3d.origin; <> <<>> Row: TYPE ~ [0..4); Col: TYPE ~ [0..4); Matrix: TYPE ~ REF MatrixRep; MatrixRep: TYPE ~ ARRAY Col OF ARRAY Row OF REAL; MatrixSequence: TYPE ~ REF MatrixSequenceRep; MatrixSequenceRep: TYPE ~ RECORD [element: SEQUENCE maxLength: NAT OF Matrix]; singular: ERROR; <> CopyMatrix: PROC [in: Matrix, out: Matrix _ NIL] RETURNS [Matrix]; <> CopyMatrixSequence: PROC [in: MatrixSequence] RETURNS [MatrixSequence]; <> Identity: PROC [out: Matrix _ NIL] RETURNS [Matrix]; <> MakeFromTriad: PROC [v1, v2, v3: Triple, p: Triple _ origin, out: Matrix _ NIL] RETURNS [Matrix]; <> MakeScale: PROC [s: Triple, out: Matrix _ NIL] RETURNS [Matrix]; <> MakeTranslate: PROC [p: Triple, out: Matrix _ NIL] RETURNS [Matrix]; <> <<>> MakePureRotate: PROC [axis: Triple, theta: REAL, degrees: BOOL _ TRUE, out: Matrix _ NIL] RETURNS [Matrix]; <> MakeRotate: PROC [axis: Triple, theta: REAL, degrees: BOOL _ TRUE, base: Triple _ origin, out: Matrix _ NIL] RETURNS [Matrix]; <> MakePerspective: PROC [dInv, fInv, fov: REAL, out: Matrix _ NIL] RETURNS [Matrix]; <> <<>> HasPerspective: PROC [mat: Matrix] RETURNS [BOOL]; <> <> TransformH: PROC [p: Triple, mat: Matrix] RETURNS [Quad]; <> <> <> <> <<>> Transform: PROC [p: Triple, mat: Matrix] RETURNS [Triple]; <> TransformD: PROC [p: Triple, mat: Matrix] RETURNS [Pair]; <> <> TransformPair: PROC [p: Pair, mat: Matrix] RETURNS [Triple]; <> <> <<>> TransformPairD: PROC [p: Pair, mat: Matrix] RETURNS [Pair]; <> <> <<>> <> <> <<>> TransformVec: PROC [vec: Triple, mat: Matrix] RETURNS [Triple]; <> TransformVecDiffS: PROC [vec: Triple, mat: Matrix] RETURNS [Triple]; <> <> <> Scale: PROC [in: Matrix, s: REAL, out: Matrix _ NIL] RETURNS [Matrix]; <> <<>> DiffScale: PROC [in: Matrix, s: Triple, out: Matrix _ NIL] RETURNS [Matrix]; <> <<>> Rotate: PROC [in: Matrix, axis: Triple, theta: REAL, degrees: BOOL _ TRUE, base: Triple _ origin, out: Matrix _ NIL] RETURNS [Matrix]; <> Translate: PROC [in: Matrix, p: Triple, out: Matrix _ NIL] RETURNS [Matrix]; <> <<>> <> LocalScale: PROC [in: Matrix, s: REAL, out: Matrix _ NIL] RETURNS [Matrix]; <> LocalDiffScale: PROC [in: Matrix, s: Triple, out: Matrix _ NIL] RETURNS [Matrix]; <> LocalRotate: PROC [in: Matrix, axis: Triple, theta: REAL, degrees: BOOL _ TRUE, base: Triple _ origin, out: Matrix _ NIL] RETURNS [Matrix]; <> LocalTranslate: PROC [in: Matrix, p: Triple, out: Matrix _ NIL] RETURNS [Matrix]; <> <> Mul: PROC [left, rite: Matrix, out: Matrix _ NIL] RETURNS [Matrix]; <> <> Cat: PROC [m1, m2: Matrix, m3, m4, m5, m6, out: Matrix _ NIL] RETURNS [Matrix]; <> <<>> Invert: PROC [in: Matrix, out: Matrix _ NIL] RETURNS [Matrix]; <> <<>> Adjoint: PROC [in: Matrix, out: Matrix _ NIL] RETURNS [Matrix]; <> Cofactors: PROC [in: Matrix, out: Matrix _ NIL] RETURNS [Matrix]; <> Determinant: PROC [mat: Matrix] RETURNS [REAL]; <> Transpose: PROC [in: Matrix, out: Matrix _ NIL] RETURNS [Matrix]; <> InTermsOf: PROC [A, B: Matrix, out: Matrix _ NIL] RETURNS [Matrix]; <> <<>> <> <> <> <<>> <> <> <> <> <> <> <<>> Invert3x3: PROC [m: Matrix, out: Matrix _ NIL] RETURNS [Matrix]; <> <> ObtainMatrix: PROC RETURNS [Matrix]; <> ReleaseMatrix: PROC [matrix: Matrix]; <> END.