DIRECTORY Real USING [SqRt], Vector3; Vector3Impl: CEDAR PROGRAM IMPORTS Real, Vector3 EXPORTS Vector3 ~ BEGIN OPEN Vector3; Add: PUBLIC PROC[a, b: VEC] RETURNS[VEC] ~ { RETURN[InlineAdd[a, b]] }; Sub: PUBLIC PROC[a, b: VEC] RETURNS[VEC] ~ { RETURN[InlineSub[a, b]] }; Neg: PUBLIC PROC[a: VEC] RETURNS[VEC] ~ { RETURN[InlineNeg[a]] }; Mul: PUBLIC PROC[a: VEC, s: REAL] RETURNS[VEC] ~ { RETURN[InlineMul[a, s]] }; Div: PUBLIC PROC[a: VEC, s: REAL] RETURNS[VEC] ~ { RETURN[InlineDiv[a, s]] }; SqrMag: PUBLIC PROC[a: VEC] RETURNS[REAL] ~ { RETURN[InlineSqrMag[a]] }; Mag: PUBLIC PROC[a: VEC] RETURNS[REAL] ~ { RETURN[InlineMag[a]] }; Dot: PUBLIC PROC[a, b: VEC] RETURNS[REAL] ~ { RETURN[InlineDot[a, b]] }; Cross: PUBLIC PROC[a, b: VEC] RETURNS[VEC] ~ { ERROR }; Unit: PUBLIC PROC[a: VEC] RETURNS[VEC] ~ { RETURN[InlineUnit[a]] }; END. RVector3Impl.mesa Doug Wyatt, July 3, 1984 12:28:38 pm PDT Vector sum, a+b. Vector difference, a-b. Vector complement, -a. Product of vector a and scalar s. Equivalent to Mul[a, 1/s]. Square of the magnitude of a. Magnitude of a. Dot (inner) product of a and b. Cross (outer) product of a and b. Unit vector in the direction of a. ʘšœ™Jšœ(™(J™—šÏk ˜ Jšœœ˜Jšœ˜J˜—Jšœ œ˜Jšœ˜Jšœ˜Jšœœœ ˜J˜šÏnœœœœœœœ˜GJ™J˜—šžœœœœœœœ˜GJ™J˜—šžœœœœœœœ˜AJ™J˜—šžœœœœœœœœ˜MJ™!J˜—šžœœœœœœœœ˜MJ™J˜—šžœœœœœœœ˜HJ™J˜—šžœœœœœœœ˜BJ™J™—šžœœœœœœœ˜HJ™J˜—šžœœœœœœœ˜7J™!J˜—šžœœœœœœœ˜CJ™"J˜—Jšœ˜—…—N¼