<> <> <> <> <<>> DIRECTORY SVMatrix3d, SV3d, SVMatrixOps; SVMatrixOpsImpl: CEDAR PROGRAM IMPORTS SVMatrix3d EXPORTS SVMatrixOps = BEGIN Matrix4by4: TYPE = SV3d.Matrix4by4; IncTransf: PUBLIC PROC [CWORLD, PWORLD, DWORLD, M: Matrix4by4] RETURNS [newCP: Matrix4by4] = { OPEN SVMatrix3d; <> CD, WORLDP: Matrix4by4; WORLDP _ SVMatrix3d.Inverse[PWORLD]; CD _ SVMatrix3d.AInTermsOfB[CWORLD, DWORLD]; newCP _ Mult[CD, Mult[M, Mult[DWORLD, WORLDP]]]; }; AbsTransf: PUBLIC PROC [PWORLD, DWORLD, N: Matrix4by4] RETURNS [newCP: Matrix4by4] = { WORLDP: Matrix4by4; WORLDP _ SVMatrix3d.Inverse[PWORLD]; newCP _ SVMatrix3d.Mult[N, SVMatrix3d.Mult[DWORLD, WORLDP]]; }; END.