<<>> <> <> <> <> DIRECTORY Controls, Draw2d, G3dBasic, G3dControl, G3dLight, G3dMatrix, G3dModel, G3dRayTrace, G3dShape, G3dTool, Imager, IO, Rope, ViewerClasses; G3dRayTraceTool: CEDAR DEFINITIONS ~ BEGIN <> ROPE: TYPE ~ Rope.ROPE; ButtonList: TYPE ~ Controls.ButtonList; ControlList: TYPE ~ Controls.ControlList; OuterData: TYPE ~ Controls.OuterData; Typescript: TYPE ~ Controls.Typescript; Viewer: TYPE ~ Controls.Viewer; DrawProc: TYPE ~ G3dTool.DrawProc; Ray: TYPE ~ G3dBasic.Ray; Triple: TYPE ~ G3dBasic.Triple; CameraControl: TYPE ~ G3dControl.CameraControl; Matrix: TYPE ~ G3dMatrix.Matrix; RayData: TYPE ~ G3dRayTrace.RayData; RayProc: TYPE ~ G3dRayTrace.RayProc; Client: TYPE ~ G3dTool.Client; Context: TYPE ~ Imager.Context; <> Tool: TYPE ~ REF ToolRep; ToolRep: TYPE ~ RECORD [ <<3d Tool:>> tool3d: G3dTool.Tool ¬ NIL, <> rayData: RayData ¬ NIL, -- ray tracing mechanism <> showRays: BOOL ¬ TRUE -- show rays on the line-drawing ]; <> MakeTool: PROC [ toolName: ROPE ¬ NIL, -- name of the tool rayProc: RayProc ¬ NIL, -- position of the eye client: Client ¬ [], extraControls: ControlList ¬ NIL, -- in addition to the standard set extraButtons: ButtonList ¬ NIL] -- in addition to the standard set RETURNS [Tool]; <> <> <<>> <> <> <> <> <> <> <> <> <> << The camera provides a view of the ray tracing world, including the object being ray-traced, the image plane, the eye-point and eye-direction, and, optionally, individual rays.>> <<>> <> <> <> <> <> <> <> <> <> <> <> RayTraceOptions: PROC [ r: RayData, ts: Typescript, rayTraceProc: PROC [clientData: REF ANY] ¬ NIL, clientData: REF ANY ¬ NIL]; <> <> <> <> <> <> Repaint: PROC [tool: Tool, whatChanged: REF ANY ¬ NIL]; <> <<>> END.