<> <> <> <> DIRECTORY SV2d, SVVector2d; SVMatrix2d: CEDAR DEFINITIONS = BEGIN Matrix3by3: TYPE = SV2d.Matrix3by3; Point2d: TYPE = SV2d.Point2d; Vector2d: TYPE = SVVector2d.Vector2d; Identity: PROC [] RETURNS [identityMat: Matrix3by3]; Update: PROC [mat: Matrix3by3, point: Point2d] RETURNS [newPoint: Point2d]; UpdateVector: PROC [mat: Matrix3by3, vec: Vector2d] RETURNS [newVec: Vector2d]; <> <> Scale: PROC [mat: Matrix3by3, sx, sy: REAL] RETURNS [transMat: Matrix3by3]; Translate: PROC [mat: Matrix3by3, dx, dy: REAL] RETURNS [transMat: Matrix3by3]; RotateCCW: PROC [mat: Matrix3by3, degrees: REAL] RETURNS [transMat: Matrix3by3]; <> LocalScale: PROC [mat: Matrix3by3, sx, sy: REAL] RETURNS [transMat: Matrix3by3]; LocalTranslate: PROC [mat: Matrix3by3, dx, dy: REAL] RETURNS [transMat: Matrix3by3]; LocalRotateCCW: PROC [mat: Matrix3by3, degrees: REAL] RETURNS [transMat: Matrix3by3]; MatMult: PROC [left, right: Matrix3by3] RETURNS [transMat: Matrix3by3]; <> MakeScaleMat: PROC [sx, sy: REAL] RETURNS [scale: Matrix3by3]; MakeTranslateMat: PROC [dx, dy: REAL] RETURNS [trans: Matrix3by3]; MakeRotateCCWMat: PROC [degrees: REAL] RETURNS [rot: Matrix3by3]; MakeMatFromXAxis: PROC [xAxis: Vector2d, origin: Point2d] RETURNS [mat: Matrix3by3]; <> MakeMatFromYAxis: PROC [yAxis: Vector2d, origin: Point2d] RETURNS [mat: Matrix3by3]; <> MakeMatFromAxes: PROC [xAxis, yAxis: Vector2d, origin: Point2d] RETURNS [mat: Matrix3by3]; <> ScaleFromMatrix: PROC [mat: Matrix3by3] RETURNS [sx, sy: REAL]; <> OriginOfMatrix: PROC [mat: Matrix3by3] RETURNS [origin: Point2d]; XAxisOfMatrix: PROC [mat: Matrix3by3] RETURNS [xAxis: Vector2d]; YAxisOfMatrix: PROC [mat: Matrix3by3] RETURNS [yAxis: Vector2d]; RotationOfMatrix: PROC [mat: Matrix3by3] RETURNS [degrees: REAL]; Cofactor: PROC [mat: Matrix3by3, row, col: NAT] RETURNS [cof: REAL]; Determinant: PROC [mat: Matrix3by3] RETURNS [det: REAL]; Transpose: PROC [mat: Matrix3by3] RETURNS [MatT: Matrix3by3]; Inverse: PROC [mat: Matrix3by3] RETURNS [inverse: Matrix3by3]; <> DegenerateInverse: SIGNAL; WorldToLocal: PROC [AinWorld,BinWorld: Matrix3by3] RETURNS [BinTermsOfA: Matrix3by3]; END.