<> <> <> <> <<>> DIRECTORY SV3d; SVLines3d: CEDAR DEFINITIONS = BEGIN Edge3d: TYPE = SV3d.Edge3d; Line3d: TYPE = SV3d.Line3d; Matrix4by4: TYPE = SV3d.Matrix4by4; Point3d: TYPE = SV3d.Point3d; Vector3d: TYPE = SV3d.Vector3d; <> CreateEmptyLine: PROC RETURNS [line: Line3d]; CopyLine: PROC [from: Line3d, to: Line3d]; <<>> <> LineFromPoints: PROC [v1, v2: Point3d] RETURNS [line: Line3d]; LineFromPointAndVector: PROC [pt: Point3d, vec: Vector3d] RETURNS [line: Line3d]; LineNormalToLineThruPoint: PROC [line: Line3d, pt: Point3d] RETURNS [normalLine: Line3d]; <> <<>> <> FillLineFromPoints: PROC [v1, v2: Point3d, line: Line3d]; FillLineFromPointAndVector: PROC [pt: Point3d, vec: Vector3d, line: Line3d]; FillLineNormalToLineThruPoint: PROC [line: Line3d, pt: Point3d, normalLine: Line3d]; <> <> CreateEmptyEdge: PROC RETURNS [edge: Edge3d]; CopyEdge: PROC [from: Edge3d, to: Edge3d]; <> CreateEdge: PROC [v1, v2: Point3d] RETURNS [edge: Edge3d]; EdgeTransform: PROC [fixed: Edge3d, transform: Matrix4by4] RETURNS [edge: Edge3d]; <<>> <> FillEdge: PROC [v1, v2: Point3d, edge: Edge3d]; FillEdgeTransform: PROC [fixed: Edge3d, transform: Matrix4by4, edge: Edge3d]; <> DirectionOfLine: PROC [line: Line3d] RETURNS [direction: Vector3d]; <> DistancePointToLine: PROC [pt: Point3d, line: Line3d] RETURNS [d: REAL]; DistanceLineToLine: PROC [l1, l2: Line3d] RETURNS [d: REAL]; DropPerpendicular: PROC [pt: Point3d, line: Line3d] RETURNS [projectedPt: Point3d]; <> <> <> NearEndpointToPoint: PROC [pt: Point3d, edge: Edge3d] RETURNS [endpoint: Point3d]; Distance2PointToEndpoint: PROC [pt: Point3d, edge: Edge3d] RETURNS [distanceSquared: REAL]; <> NearEdgePointToPoint: PROC [pt: Point3d, edge: Edge3d] RETURNS [onEdge: Point3d]; <> Distance2PointToEdge: PROC [pt: Point3d, edge: Edge3d] RETURNS [distanceSquared: REAL]; <> DistancePointToEdge: PROC [pt: Point3d, edge: Edge3d] RETURNS [distance: REAL]; OnEdge: PROC [pt: Point3d, edge: Edge3d] RETURNS [BOOL]; <> LinePointOnEdge: PROC [pt: Point3d, edge: Edge3d] RETURNS [BOOL]; <> <> <> DistanceLineToEdge: PROC [line: Line3d, edge: Edge3d] RETURNS [distance: REAL]; NearEdgePointToLine: PROC [line: Line3d, edge: Edge3d] RETURNS [edgePoint: Point3d]; DistanceAndPointLineToEdge: PROC [line: Line3d, edge: Edge3d] RETURNS [distance: REAL, edgePoint: Point3d]; <> END.