<> <> <> <> DIRECTORY SV2d; SVLines2d: CEDAR DEFINITIONS = BEGIN LineSeg: TYPE = REF LineSegObj; LineSegObj: TYPE = SV2d.LineSegObj; Point2d: TYPE = SV2d.Point2d; Ray2d: TYPE = REF Ray2dObj; Ray2dObj: TYPE = SV2d.Ray2dObj; TrigLine: TYPE = REF TrigLineObj; TrigLineObj: TYPE = SV2d.TrigLineObj; TrigLineSeg: TYPE = REF TrigLineSegObj; TrigLineSegObj: TYPE = SV2d.TrigLineSegObj; Vector2d: TYPE = SV2d.Vector2d; <> CreateEmptyTrigLine: PUBLIC PROC RETURNS [line: TrigLine]; CopyTrigLine: PROC [from: TrigLine, to: TrigLine]; <> FillTrigLineFromPoints: PROC [v1, v2: Point2d, line: TrigLine]; FillTrigLineFromPointAndVector: PROC [pt: Point2d, vec: Vector2d, line: TrigLine]; FillTrigLineFromCoefficients: PROC [sineOfTheta, cosineOfTheta, distance: REAL, line: TrigLine]; FillTrigLineAsNormal: PROC [line: TrigLine, pt: Point2d, normalLine: TrigLine]; <> TrigLineFromPoints: PROC [v1, v2: Point2d] RETURNS [line: TrigLine]; TrigLineFromPointAndVector: PROC [pt: Point2d, vec: Vector2d] RETURNS [line: TrigLine]; TrigLineFromCoefficients: PROC [sineOfTheta, cosineOfTheta, distance: REAL] RETURNS [line: TrigLine]; TrigLineNormalToTrigLineThruPoint: PROC [line: TrigLine, pt: Point2d] RETURNS [normalLine: TrigLine]; TrigLineMeetsTrigLine: PROC [line1, line2: TrigLine] RETURNS [intersection: Point2d, parallel: BOOL]; TrigLineMeetsYAxis: PROC [line: TrigLine] RETURNS [yInt: REAL, parallel: BOOL]; TrigLineMeetsTrigLineSeg: PROC [line: TrigLine, seg: TrigLineSeg] RETURNS [intersection: Point2d, noHit: BOOL]; TrigLineDistance: PROC [pt: Point2d, line: TrigLine] RETURNS [d: REAL]; PointProjectedOntoTrigLine: PROC [pt: Point2d, line: TrigLine] RETURNS [projectedPt: Point2d]; <> <> <<>> <> CreateTrigLineSeg: PROC [v1, v2: Point2d] RETURNS [seg: TrigLineSeg]; CreateEmptyTrigLineSeg: PROC RETURNS [seg: TrigLineSeg]; FillTrigLineSeg: PROC [v1, v2: Point2d, seg: TrigLineSeg]; CopyTrigLineSeg: PROC [from: TrigLineSeg, to: TrigLineSeg]; TrigLinePointOnTrigLineSeg: PROC [pt: Point2d, seg: TrigLineSeg] RETURNS [BOOL]; <> NearestEndpoint: PROC [pt: Point2d, seg: TrigLineSeg] RETURNS [endpoint: Point2d]; DistanceSquaredToNearestEndpoint: PUBLIC PROC [pt: Point2d, seg: TrigLineSeg] RETURNS [distanceSquared: REAL]; <> DistancePointToTrigLineSeg: PROC [pt: Point2d, seg: TrigLineSeg] RETURNS [distance: REAL]; <> DistanceSquaredPointToTrigLineSeg: PROC [pt: Point2d, seg: TrigLineSeg] RETURNS [distanceSquared: REAL]; <<>> <> DistancePointToPoint: PROC [p1, p2: Point2d] RETURNS [distance: REAL]; DistanceSquaredPointToPoint: PROC [p1, p2: Point2d] RETURNS [distance: REAL]; PointLeftOfTrigLine: PROC [distance: REAL, pOnLine: Point2d, line: TrigLine] RETURNS [point: Point2d]; <> <<>> <> CreateLineSeg: PROC [v1, v2: Point2d] RETURNS [seg: LineSeg]; <<>> <> CreateRay: PROC [basePoint: Point2d, direction: Vector2d] RETURNS [ray: Ray2d]; CreateRayFromPoints: PROC [p1, p2: Point2d] RETURNS [ray: Ray2d]; RightHorizontalRay: PROC [point: Point2d] RETURNS [horizRayThruPoint: Ray2d]; UpVerticalRay: PROC [point: Point2d] RETURNS [vertRayThruPoint: Ray2d]; RayMeetsBox: PROC [ray: Ray2d, xmin, ymin, xmax, ymax: REAL] RETURNS [count: NAT, params: ARRAY[1..2] OF REAL]; <> LineRayMeetsBox: PROC [ray: Ray2d, xmin, ymin, xmax, ymax: REAL] RETURNS [count: NAT, params: ARRAY[1..2] OF REAL]; <> EvalRay: PROC [ray: Ray2d, param: REAL] RETURNS [point: Point2d]; END.