DIRECTORY Real USING [SqRt]; Vector2: CEDAR DEFINITIONS IMPORTS Real ~ BEGIN VEC: TYPE ~ RECORD[x, y: REAL]; Add: PROC[a, b: VEC] RETURNS[VEC]; InlineAdd: PROC[a, b: VEC] RETURNS[VEC] ~ INLINE { RETURN[[a.x+b.x, a.y+b.y]] }; Sub: PROC[a, b: VEC] RETURNS[VEC]; InlineSub: PROC[a, b: VEC] RETURNS[VEC] ~ INLINE { RETURN[[a.x-b.x, a.y-b.y]] }; Neg: PROC[a: VEC] RETURNS[VEC]; InlineNeg: PROC[a: VEC] RETURNS[VEC] ~ INLINE { RETURN[[-a.x, -a.y]] }; Mul: PROC[a: VEC, s: REAL] RETURNS[VEC]; InlineMul: PROC[a: VEC, s: REAL] RETURNS[VEC] ~ INLINE { RETURN[[a.x*s, a.y*s]] }; Div: PROC[a: VEC, s: REAL] RETURNS[VEC]; InlineDiv: PROC[a: VEC, s: REAL] RETURNS[VEC] ~ INLINE { RETURN[[a.x/s, a.y/s]] }; SqrMag: PROC[a: VEC] RETURNS[REAL]; InlineSqrMag: PROC[a: VEC] RETURNS[REAL] ~ INLINE { RETURN[a.x*a.x+a.y*a.y] }; Mag: PROC[a: VEC] RETURNS[REAL]; InlineMag: PROC[a: VEC] RETURNS[REAL] ~ INLINE { RETURN[Real.SqRt[a.x*a.x+a.y*a.y]] }; Dot: PROC[a, b: VEC] RETURNS[REAL]; InlineDot: PROC[a, b: VEC] RETURNS[REAL] ~ INLINE { RETURN[a.x*b.x+a.y*b.y] }; Cross: PROC[a, b: VEC] RETURNS[REAL]; InlineCross: PROC[a, b: VEC] RETURNS[REAL] ~ INLINE { RETURN[a.x*b.y-a.y*b.x] }; Unit: PROC[a: VEC] RETURNS[VEC]; InlineUnit: PROC[a: VEC] RETURNS[VEC] ~ INLINE { RETURN[InlineDiv[a, InlineMag[a]]] }; Normal: PROC[a: VEC] RETURNS[VEC]; InlineNormal: PROC[a: VEC] RETURNS[VEC] ~ INLINE { RETURN[[-a.y, a.x]] }; END. šVector2.mesa Michael Plass, August 4, 1982 11:58 am Doug Wyatt, July 3, 1984 12:24:50 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. Magnitude of the cross (outer) product of a and b. Unit vector in the direction of a. Vector normal to a. Êh˜šœ ™ Jšœ&™&Jšœ(™(J™—šÏk ˜ Jšœœ˜J˜—Jšœ œ ˜Jšœ˜ Jšœ˜J˜Jšœœœœ˜J˜Jš Ïnœœœœœ˜"šž œœœœœœœ˜PJ™J˜—Jš žœœœœœ˜"šž œœœœœœœ˜PJ™J˜—Jš žœœœœœ˜šž œœœœœœœ˜GJ™J˜—Jš žœœœœœœ˜(šž œœœœœœœœ˜RJ™!J˜—Jš žœœœœœœ˜(šž œœœœœœœœ˜RJ™J˜—Jš žœœœœœ˜#šž œœœœœœœ˜NJ™J˜—Jš žœœœœœ˜ šž œœœœœœœ˜VJ™J™—Jš žœœœœœ˜#šž œœœœœœœ˜NJ™J˜—Jš žœœœœœ˜%šž œœœœœœœ˜PJ™2J˜—Jš žœœœœœ˜ šž œœœœœœœ˜VJ™"J˜—Jš žœœœœœ˜"šž œœœœœœœ˜IJ™J˜—Jšœ˜—…—‚ „