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