<> <> <> <> DIRECTORY Rope, SV2d, SV3d, SVModelTypes, SVVector3d; CoordSys: DEFINITIONS = BEGIN CoordSystem: TYPE = SVModelTypes.CoordSystem; CoordSysList: TYPE = SVModelTypes.CoordSysList; Matrix4by4: TYPE = SV3d.Matrix4by4; Point2d: TYPE = SV2d.Point2d; Point3d: TYPE = SV3d.Point3d; Vector: TYPE = SVVector3d.Vector; CreateRoot: PROC [name: Rope.ROPE] RETURNS [newCS: CoordSystem]; CreateCoordSysInTree: PROC [name: Rope.ROPE, mat: Matrix4by4, parent: CoordSystem, root: CoordSystem] RETURNS [newCS: CoordSystem]; NameAlreadyExists: SIGNAL; CreateScalarsOnlyCoordSysInTree: PROC [name: Rope.ROPE, scalars: Vector, parent: CoordSystem, root: CoordSystem] RETURNS [newCS: CoordSystem]; CopyCoordSysFromAnyTree: PROC [source: CoordSystem, newName: Rope.ROPE, parent: CoordSystem, root: CoordSystem] RETURNS [newCS: CoordSystem]; <> ResetScalars: PROC [cs: CoordSystem, scalars: Vector]; <> GetScalars: PROC [cs: CoordSystem] RETURNS [scalars: Vector]; <> DeleteCoordSysAndChildren: PROC [cs: CoordSystem, root: CoordSystem]; MakeListFromTree: PROC [root: CoordSystem] RETURNS [csl: CoordSysList]; <> TSortCoordSysListByBreadth: PUBLIC PROC [csl: CoordSysList] RETURNS [sortedCsl: CoordSysList]; <> FindCoordSysInTree: PROC [name: Rope.ROPE, root: CoordSystem] RETURNS [cs: CoordSystem]; CoordSysNotFound: SIGNAL; CoordSysListEmpty: SIGNAL; CoordSysNameIsPresent: PROC [name: Rope.ROPE, root: CoordSystem] RETURNS [BOOL]; FindCoordSysInList: PROC [name: Rope.ROPE, csl: CoordSysList] RETURNS [cs: CoordSystem]; <> FindCoordSysAndNeighborsInList: PROC [name: Rope.ROPE, csl: CoordSysList] RETURNS [beforeCS, cs, afterCS: CoordSysList]; <> BaseAndNumber: PROC [name: Rope.ROPE] RETURNS [base: Rope.ROPE, number: NAT]; UniqueNameWithSuffix: PROC [oldName: Rope.ROPE, suffix: Rope.ROPE, root: CoordSystem] RETURNS [unique: Rope.ROPE]; <> UniqueNameFrom: PROC [name: Rope.ROPE, root: CoordSystem] RETURNS [unique: Rope.ROPE]; <> CameraToScreen: PROC [cameraPoint2d: Point2d, screenCoordSys: CoordSystem] RETURNS [screenPoint2d: Point2d]; ScreenToCamera: PROC [screenPoint2d: Point2d, screenCoordSys: CoordSystem] RETURNS [cameraPoint2d: Point2d]; FromCSToCS: PROC [pt: Point3d, currentCS: CoordSystem, newCS: CoordSystem] RETURNS [newPt: Point3d]; <> FromCSToCSMat: PROC [mat: Matrix4by4, currentCS: CoordSystem, newCS: CoordSystem] RETURNS [newMat: Matrix4by4]; <> FindInTermsOfWorld: PROC [cs: CoordSystem] RETURNS [mat: Matrix4by4]; FindInTermsOfCamera: PROC [cs: CoordSystem, camera: CoordSystem] RETURNS [mat: Matrix4by4]; FindWorldInTermsOf: PROC [cs: CoordSystem] RETURNS [mat: Matrix4by4]; FindCameraInTermsOf: PROC [cs: CoordSystem, camera: CoordSystem] RETURNS [mat: Matrix4by4]; FindAInTermsOfB: PROC [a: CoordSystem, b: CoordSystem] RETURNS [mat: Matrix4by4]; <> FindTranslationOfAinTermsOfB: PROC [a: CoordSystem, b: CoordSystem] RETURNS [displacements: Vector]; <> PutAInTermsOfB: PROC [a: CoordSystem, b: CoordSystem] RETURNS [mat: Matrix4by4]; <> END.