Linear3d.mesa
Copyright © 1984 by Xerox Corporation. All rights reserved.
Last Edited by: Crow, February 4, 1986 10:16:33 am PST
DIRECTORY
Vector2    USING [VEC];
Linear3d: CEDAR DEFINITIONS
~ BEGIN
Basic Types
Linear3dError: SIGNAL [reason: ATOM];
Pair: TYPE ~ Vector2.VEC;           -- RECORD [ x, y: REAL];
Triple: TYPE ~ RECORD [ x, y, z: REAL];
Quad: TYPE ~ RECORD [ x, y, z, w: REAL];
Xfm3d: TYPE ~ RECORD [ a, b, c, d: Quad];
IntTriple: TYPE ~ RECORD [ x, y, z: INT];
Procedures for Operations on Triples (3d vectors, or points)
SumTriple: PROCEDURE [t1, t2: Triple] RETURNS [Triple];
DiffTriple: PROCEDURE [t1, t2: Triple] RETURNS [Triple];
ScaleTriple: PROCEDURE [t: Triple, s: REAL] RETURNS [Triple];
Magnitude: PROC[v: Triple] RETURNS[REAL];
Normalize: PROC[v: Triple] RETURNS[Triple];
DotProd: PROC[v1, v2: Triple] RETURNS [REAL];
CrossProd: PROC[v1, v2: Triple] RETURNS [vOut: Triple];
EvalPlane: PROC[plane: Quad, point: Triple] RETURNS [distance: REAL];
Transform3d: PROC[ vtx: Triple, xfm: Xfm3d] RETURNS [Triple];
TransformVec3d: PROC[ vtx: Triple, xfm: Xfm3d] RETURNS [Triple];
Procedures for Operations on Transformations
ConcatT: PROC[xfm1, xfm2: Xfm3d] RETURNS[xfmOut: Xfm3d];
Translate3d: PROC[ delta: Triple] RETURNS [Xfm3d];
Rotate3d: PROC[base, axis: Triple, theta: REAL] RETURNS[Xfm3d];
END.