-- transformation package
--M. Stone October 23, 1979 4:04 PM
-- Last Edited by: Stone, January 26, 1983 4:05 pm

DIRECTORY
 Rope USING [ROPE],
 PointDefs: FROM "PointDefs";

XFormDefs: DEFINITIONS =
BEGIN OPEN PointDefs;
Axis: TYPE = {x,y,z};
XFormMatrix: TYPE = ARRAY [1..3] OF ObjPt;
XFMDescriptor: TYPE = REF XFormMatrix;
ProblemWithXForms: SIGNAL[string: Rope.ROPE];

--Exported by TransformFns

InitXForms: PROCEDURE[matrix: XFMDescriptor];
Rotate: PROCEDURE[ theta: REAL, axis: XFormDefs.Axis,matrix: XFMDescriptor];
Scale: PROCEDURE[ scale: ARRAY[X..Y] OF REAL,matrix: XFMDescriptor];
Translate: PROCEDURE[ dist: ARRAY[X..Y] OF REAL,matrix: XFMDescriptor];
XFormPt: PROCEDURE [pt: ObjPt,matrix: XFMDescriptor] RETURNS[ObjPt];
XForm4Pts: PROCEDURE[ pts: PointDefs.ObjPtSequence,matrix: XFMDescriptor];
XForm6Pts: PUBLIC PROCEDURE[ pts: PointDefs.ObjPtSequence,matrix: XFMDescriptor];
GetInverseXForm: PROCEDURE RETURNS[matrix: XFMDescriptor];

END.