<> <> <> <> DIRECTORY Rope, SV2d, SV3d, SVModelTypes, SVVector3d; CoordSys: CEDAR DEFINITIONS = BEGIN CoordSystem: TYPE = SVModelTypes.CoordSystem; CoordSysList: TYPE = SVModelTypes.CoordSysList; Matrix4by4: TYPE = SV3d.Matrix4by4; Point2d: TYPE = SV2d.Point2d; Point3d: TYPE = SV3d.Point3d; Vector3d: TYPE = SVVector3d.Vector3d; <> 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: Vector3d, parent: CoordSystem, root: CoordSystem] RETURNS [newCS: CoordSystem]; CopyCoordSysFromAnyTree: PROC [source: CoordSystem, newName: Rope.ROPE, parent: CoordSystem, root: CoordSystem] RETURNS [newCS: CoordSystem]; <> PutAInTermsOfB: PROC [a: CoordSystem, b: CoordSystem] RETURNS [mat: Matrix4by4]; <> DeleteCoordSysAndChildren: PROC [cs: CoordSystem, root: CoordSystem]; FindCoordSysInTree: PROC [name: Rope.ROPE, root: CoordSystem] RETURNS [cs: CoordSystem]; CoordSysNotFound: SIGNAL; CoordSysListEmpty: SIGNAL; CoordSysNameIsPresent: PROC [name: Rope.ROPE, root: CoordSystem] RETURNS [BOOL]; MakeListFromTree: PROC [root: CoordSystem] RETURNS [csl: CoordSysList]; <> FindCoordSysInList: PROC [name: Rope.ROPE, csl: CoordSysList] RETURNS [cs: CoordSystem]; <> Parent: PROC [cs: CoordSystem] RETURNS [parent: CoordSystem]; Name: PROC [cs: CoordSystem] RETURNS [name: Rope.ROPE]; SetName: PROC [cs: CoordSystem, name: Rope.ROPE]; GetSceneAssembly: PROC [world: CoordSystem] RETURNS [sa: CoordSystem]; <> 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]; NameWithSuffix: PROC [oldName: Rope.ROPE, suffix: Rope.ROPE, root: CoordSystem] RETURNS [probablyUnique: Rope.ROPE]; <> <> SetScalars: PROC [cs: CoordSystem, scalars: Vector3d]; <> GetScalars: PROC [cs: CoordSystem] RETURNS [scalars: Vector3d]; <> SetMat: PROC [cs: CoordSystem, mat: Matrix4by4]; <> GetMat: PROC [cs: CoordSystem] RETURNS [mat: Matrix4by4]; IsScalarsOnly: PROC [cs: CoordSystem] RETURNS [BOOL]; <> <> 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]; <> WRTWorld: PROC [cs: CoordSystem] RETURNS [mat: Matrix4by4]; WRTCamera: PROC [cs: CoordSystem, cameraCS: CoordSystem] RETURNS [mat: Matrix4by4]; FindWorldInTermsOf: PROC [cs: CoordSystem] RETURNS [mat: Matrix4by4]; FindCameraInTermsOf: PROC [cs: CoordSystem, cameraCS: CoordSystem] RETURNS [mat: Matrix4by4]; FindAInTermsOfB: PROC [a: CoordSystem, b: CoordSystem] RETURNS [mat: Matrix4by4]; <> FindTranslationOfAinTermsOfB: PROC [a: CoordSystem, b: CoordSystem] RETURNS [displacements: Vector3d]; END.