<> <> <> <> <> DIRECTORY GGBasicTypes; GGVector: CEDAR DEFINITIONS = BEGIN Point: TYPE = GGBasicTypes.Point; Edge: TYPE = GGBasicTypes.Edge; Vector: TYPE = GGBasicTypes.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]; CrossProductScalar: 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.