<<>> <> <> <> DIRECTORY CedarProcess, Controls, CtBasic, Draw2d, G3dBasic, G3dControl, G3dMatrix, G3dOctree, G3dRayTrace, Rope, ImplicitDefs, ViewerClasses; ImplicitRayTrace: CEDAR DEFINITIONS ~ BEGIN <> Process: TYPE ~ CedarProcess.Process; ButtonList: TYPE ~ Controls.ButtonList; ControlList: TYPE ~ Controls.ControlList; OuterData: TYPE ~ Controls.OuterData; RGB: TYPE ~ CtBasic.RGB; DrawProc: TYPE ~ Draw2d.DrawProc; Ray: TYPE ~ G3dBasic.Ray; Triple: TYPE ~ G3dBasic.Triple; Camera: TYPE ~ G3dControl.Camera; Matrix: TYPE ~ G3dMatrix.Matrix; Intersection: TYPE ~ G3dOctree.Intersection; Octree: TYPE ~ G3dOctree.Octree; RayData: TYPE ~ G3dRayTrace.RayData; RayProc: TYPE ~ G3dRayTrace.RayProc; NormalProc: TYPE ~ ImplicitDefs.NormalProc; ValueProc: TYPE ~ ImplicitDefs.ValueProc; ROPE: TYPE ~ Rope.ROPE; Viewer: TYPE ~ ViewerClasses.Viewer; xAxis: Triple ~ G3dBasic.xAxis; yAxis: Triple ~ G3dBasic.yAxis; zAxis: Triple ~ G3dBasic.zAxis; <> RayHit: TYPE ~ RECORD [ point: Triple ¬ [], value: REAL ¬ 0.0, t: REAL ¬ 0.0, type: {entering, leaving, empty} ¬ empty ]; RayHitList: TYPE ~ LIST OF RayHit; SurfacePoint: TYPE ~ RECORD [point, normal: Triple, value: REAL]; <> Error: ERROR [reason: ROPE]; GetRayHit: PROC [ i0, i1: Intersection, valueProc: ValueProc, threshold: REAL ¬ 1.0, clientData: REF ANY ¬ NIL, epsilon: REAL ¬ 0.0] RETURNS [RayHit]; <> <<(i0.value > 0.0) is presumed # (i1.value > 0.0).>> <> GetRayHits: PROC [ i0, i1: Intersection, valueProc: ValueProc, threshold: REAL ¬ 1.0, clientData: REF ANY ¬ NIL, epsilon: REAL ¬ 0.0] RETURNS [hits: RayHitList]; <> RayIntersection: PROC [ ray: Ray, octree: Octree, valueProc: ValueProc, threshold: REAL ¬ 1.0, clientData: REF ANY ¬ NIL] RETURNS [RayHit]; <> RayIntersections: PROC [ ray: Ray, octree: Octree, valueProc: ValueProc, threshold: REAL ¬ 1.0, clientData: REF ANY ¬ NIL] RETURNS [RayHitList]; <> RayAtSurface: PROC [ ray: Ray, octree: Octree, valueProc: ValueProc, threshold: REAL ¬ 1.0, normalProc: NormalProc ¬ NIL, clientData: REF ANY ¬ NIL] RETURNS [SurfacePoint]; <> RayThroughSurface: PROC [ ray: Ray, octree: Octree, valueProc: ValueProc, threshold: REAL ¬ 1.0, clientData: REF ANY ¬ NIL] RETURNS [thickness: REAL, firstHit: RayHit]; <> <> <<>> InShadow: PROC [ octree: Octree, surfacePoint, lightDirection: Triple, valueProc: ValueProc, threshold: REAL ¬ 1.0, clientData: REF ANY ¬ NIL] RETURNS [BOOL]; <> AnyHit: PROC [ i0, i1: Intersection, valueProc: ValueProc, threshold: REAL ¬ 1.0, clientData: REF ANY ¬ NIL] RETURNS [BOOL]; <> END. <<>>