IMPORTED TYPES
BoundBox: TYPE = SVModelTypes.BoundBox;
BoundSphere: TYPE = SVModelTypes.BoundSphere;
Classification: TYPE = SVRayTypes.Classification;
EdgeOnRect: TYPE = SVFaces.EdgeOnRect;
LinearMesh: TYPE = SweepGeometry.LinearMesh;
Polygon: TYPE = SV2d.Polygon;
Primitive: TYPE = SVRayTypes.Primitive;
Ray: TYPE = SVRayTypes.Ray;
RevoluteMesh: TYPE = SweepGeometry.RevoluteMesh;
Point2d: TYPE = SV2d.Point2d;
Vector: TYPE = SV3d.Vector;
TYPES DEFINED HERE
LinSweepFaces: TYPE = REF LinSweepFacesObj;
LinSweepFacesObj:
TYPE =
RECORD [
mesh: LinearMesh, poly: Polygon, len: NAT, seq: SEQUENCE maxFaces: NAT OF EdgeOnRect];
RevoSweepFaces: TYPE = REF RevoSweepFacesObj;
RevoSweepFacesObj:
TYPE =
RECORD [
mesh: RevoluteMesh, len: NAT, seq: SEQUENCE maxFaces: NAT OF RevoFace];
RevoFace:
TYPE =
REF
ANY;
will be an SVFaces.Cone, SVFaces.DiskRing, or SVFaces.Cylinder;
SubBoxesBody: TYPE = REF SubBoxesBodyObj;
SubBoxesBodyObj:
TYPE =
RECORD [
len: NAT, seq: SEQUENCE maxFaces: NAT OF BoundBox];
SubSpheresBody: TYPE = REF SubSpheresBodyObj;
SubSpheresBodyObj:
TYPE =
RECORD [
len: NAT, seq: SEQUENCE maxFaces: NAT OF BoundSphere];
RevoHitArray: TYPE = REF RevoHitArrayObj;
RevoHitArrayObj:
TYPE =
RECORD [
count: NAT,
array: ARRAY[1..SweepGeometry.maxLinesOfLat+1] OF RevoHitRec,
inOuts: ARRAY[1..SweepGeometry.maxLinesOfLat+1] OF BOOL
];
RevoHitRec: TYPE = REF RevoHitRecObj;
RevoHitRecObj:
TYPE =
RECORD [
param: REAL, normal: Vector, lineOfLatitude: NAT];
LinHitArray: TYPE = REF LinHitArrayObj;
LinHitArrayObj:
TYPE =
RECORD [
count: NAT,
array: ARRAY[1..SweepGeometry.maxMeshLen-1] OF LinHitRec
];
LinHitRec: TYPE = REF LinHitRecObj;
LinHitRecObj:
TYPE =
RECORD [
param:
REAL, normal: Vector, index:
NAT];
index of front is 0, back is linMesh.len + 1;
RevoCast:
PROC [cameraPoint: Point2d, localRay: Ray, prim: Primitive, faces: RevoSweepFaces, boxes: SubBoxesBody]
RETURNS [class: Classification];
prim contains a RevoSweepFaces in prim.hints.