DIRECTORY GGModelTypes; GGVector: CEDAR DEFINITIONS = BEGIN Point: TYPE = GGModelTypes.Point; Edge: TYPE = GGModelTypes.Edge; Vector: TYPE = GGModelTypes.Vector; VectorFromAngle: PROC [angle: REAL] RETURNS [vector: Vector]; VectorPlusAngle: PROC [v: Vector, degrees: REAL] RETURNS [rotatedV: Vector]; AngleFromVector: PROC [v: Vector] RETURNS [position: REAL]; AngleCCWBetweenVectors: PROC [v1, v2: Vector] RETURNS [difference: REAL]; AngleCWBetweenVectors: PROC [v1, v2: Vector] RETURNS [difference: REAL]; SmallestAngleBetweenVectors: PROC [v1, v2: Vector] RETURNS [difference: REAL]; Add: PROC [v1, v2: Vector] RETURNS [v1PlusV2: Vector]; Sub: PROC [v1, v2: Vector] RETURNS [v1MinusV2: Vector]; Scale: PROC [v: Vector, s: REAL] RETURNS [vTimesS: Vector]; Normalize: PROC [v: Vector] RETURNS [normV: Vector]; Negate: PROC [v: Vector] RETURNS [negV: Vector]; ElementwiseProduct: PROC [v1, v2: Vector] RETURNS [v1Timesv2: Vector]; DotProduct: PROC [v1, v2: Vector] RETURNS [scalar: REAL]; Magnitude: PROC [v: Vector] RETURNS [mag: REAL]; Distance: PROC [p1, p2: Point] RETURNS [dist: REAL]; MagnitudeSquared: PROC [v: Vector] RETURNS [magSquared: REAL]; DistanceSquared: PROC [p1, p2: Point] RETURNS [distSquared: REAL]; VectorFromPoints: PROC [tail, head: Point] RETURNS [vector: Vector]; RightNormalOfEdge: PROC [edge: Edge] RETURNS [normal: Vector]; LeftNormalOfEdge: PROC [edge: Edge] RETURNS [normal: Vector]; END. File: GGVector.mesa Last edited by Bier on June 4, 1985 6:08:43 pm PDT Author: Eric Bier on June 21, 1985 5:52:51 pm PDT Contents: Routines for manipulating vectors in two dimensions angle must be in degrees in the range: -180 < angle <= 180. vector is a unit vector. difference will be in: 0 <= difference < 360. A clockwise angle difference will be in: 0 <= difference < 360. A counter-clockwise angle All angles in degrees. RETURNS ClockwiseAngle or CounterClockwiseAngle. Whichever is smaller. -180< difference <= 180. ΚY˜Iheadšœ™Iprocšœ2™2Lšœ1™1Lšœ=™=L˜šΟk ˜ Lšœ ˜ —L˜Lšœ œ˜Lš˜˜Lšœœ˜!Lšœœ˜Lšœœ˜#L˜—šΟnœœ œœ˜=Lšœ;™;Lšœ™—L˜Lšžœœœœ˜LL˜Lšžœœ œ œ˜;šžœœœœ˜ILšœ@™@—šžœœœœ˜HLšœH™H—šžœœœœ˜NLšœx™x—L˜Lšžœœœ˜6Lšžœœœ˜7Lšžœœœœ˜;Lšž œœ œ˜4Lšžœœ œ˜0Lšžœœœ˜FLšž œœœ œ˜9Lšž œœ œœ˜0Lšžœœœœ˜4Lšžœœ œœ˜>Lšžœœœœ˜BL˜Lšžœœœ˜DL˜Lšžœœœ˜>Lšžœœœ˜=L˜Lšœ˜J˜—…—˜