<> <> <> DIRECTORY PETypes; PEAlgebra: CEDAR DEFINITIONS = BEGIN OPEN PETypes; Sqr: PUBLIC PROCEDURE [number: REAL] RETURNS [squared: REAL] = INLINE { RETURN[number * number]; }; DistanceSquared: PUBLIC PROCEDURE [a, b: Point] RETURNS [d: REAL] = INLINE { RETURN [Sqr[a.x - b.x] + Sqr[a.y - b.y]]; }; ClosestPointOnLineSegment: PROCEDURE [point, p0, p1: Point] RETURNS [closestPoint: Point]; <> Projection: PROCEDURE [point, p0, p1: Point] RETURNS [colinearPoint: Point]; <> <<>> Intersection: PROCEDURE [line1A, line1B, line2A, line2B: Point] RETURNS [intersecting: BOOLEAN, p: Point]; <> <<>> END.