<> <> <> <> DIRECTORY Matrix3d, SV2d, SV3d, SVPolygon2d, SVVector3d; SVPolygon3d: DEFINITIONS = BEGIN Point3d: TYPE = SV3d.Point3d; Polygon: TYPE = SVPolygon2d.Polygon; Vector: TYPE = SVVector3d.Vector; Poly3d: TYPE = REF Poly3dObj; Poly3dObj: TYPE = SV3d.Poly3dObj; Plane: TYPE = REF PlaneObj; PlaneObj: TYPE = SV3d.PlaneObj; CreatePoly: PROC [len: NAT] RETURNS [poly3d: Poly3d]; CircumHexagon: PROC [y: REAL, r: REAL] RETURNS [hex: Poly3d]; <> ClearPoly: PROC [poly: Poly3d]; AddPolyPoint: PROC [poly: Poly3d, point: Point3d] RETURNS [polyPlusPoint: Poly3d]; PutPolyPoint: PROC [poly: Poly3d, index: NAT, point: Point3d] RETURNS [newPoly: Poly3d]; PartPolyGetsPartPoly: PUBLIC PROC [fromPoly: Poly3d, fromStart: NAT, toPoly: Poly3d, toStart: NAT, duration: NAT] RETURNS [newPoly: Poly3d]; <> PlaneFromPoly3d: PROC [poly: Poly3d] RETURNS [plane: Plane]; <> PlaneFromPointAndNormal: PROC [point: Point3d, normal: Vector] RETURNS [plane: Plane]; PlaneFromCoefficients: PROC [A, B, C, D: REAL] RETURNS [plane: Plane]; SignedPointToPlaneDistance: PROC [point: Point3d, plane: Plane] RETURNS [distance: REAL]; ClipPolyToPlane: PROC [poly: Poly3d, plane: Plane] RETURNS [clippedPoly: Poly3d]; ClipPolyToPlanes: PROC [poly: Poly3d, planes: LIST OF Plane] RETURNS [clippedPoly: Poly3d]; LineSegmentMeetsPlane: PROC [p1, p2: Point3d, plane: Plane] RETURNS [intersection: Point3d]; ClipLineSegmentToPlane: PROC [p1, p2: Point3d, plane: Plane] RETURNS [newP1, newP2: Point3d, newP1isP1, newP2isP2, nullSegment: BOOL]; ClipLineSegmentToPlanes: PROC [p1, p2: Point3d, planes: LIST OF Plane] RETURNS [newP1, newP2: Point3d, newP1isP1, newP2isP2, nullSegment: BOOL]; NormalOfPlane: PROC [plane: Plane] RETURNS [normal: Vector]; PointOnNormalSideOfPlane: PROC [point: Point3d, plane: Plane] RETURNS [BOOL]; Quadrant: TYPE = {inin, inout, outin, outout}; QuadrantOfPoint: PROC [point: Point3d, plane1, plane2: Plane] RETURNS [Quadrant]; <> ProjectPolyToXYPlane: PROC [poly3d: Poly3d] RETURNS [polygon: Polygon]; ProjectPolyToYZPlane: PROC [poly3d: Poly3d] RETURNS [polygon: Polygon]; ProjectPolyToXZPlane: PROC [poly3d: Poly3d] RETURNS [polygon: Polygon]; END.