<<>> <> <> <> DIRECTORY G3dBasic, G3dPlane, ImplicitDefs, Rope; ImplicitValue: CEDAR DEFINITIONS ~ BEGIN <> Pair: TYPE ~ G3dBasic.Pair; Segment: TYPE ~ G3dBasic.Segment; Triple: TYPE ~ G3dBasic.Triple; Plane: TYPE ~ G3dPlane.Plane; DistanceMode: TYPE ~ ImplicitDefs.DistanceMode; Sample: TYPE ~ ImplicitDefs.Sample; ValueProc: TYPE ~ ImplicitDefs.ValueProc; Source2d: TYPE ~ RECORD [ p: Pair, -- location of 2d source strength: REAL -- its strength ]; Source3d: TYPE ~ RECORD [ p: Triple, -- location of 3d source strength: REAL, -- its strength sInvSqrd: REAL -- inverse squared strength ]; Source2dSequence: TYPE ~ REF Source2dSequenceRep; Source2dSequenceRep: TYPE ~ RECORD [ length: NAT ¬ 0, element: SEQUENCE maxLength: NAT OF Source2d ]; Source3dSequence: TYPE ~ REF Source3dSequenceRep; Source3dSequenceRep: TYPE ~ RECORD [ length: NAT ¬ 0, element: SEQUENCE maxLength: NAT OF Source3d ]; Item: TYPE ~ RECORD [ sample: Sample, inside: BOOL, type: {segment, tripoly} ]; ItemSequence: TYPE ~ REF ItemSequenceRep; ItemSequenceRep: TYPE ~ RECORD [ length: CARDINAL ¬ 0, element: SEQUENCE maxLength: CARDINAL OF Item ]; <> OfPoint: PROC [ q, source: Triple, strength: REAL, distanceMode: DistanceMode] RETURNS [Sample]; <> <<>> OfSegment: PROC [ source: Triple, segment: Segment, strength: REAL, distanceMode: DistanceMode] RETURNS [Sample]; <> <> CombineSamples: PROC [samples: LIST OF Sample] RETURNS [sample: Sample]; <> <> CopySources2d: PROC [sources2d: Source2dSequence] RETURNS [Source2dSequence]; <> <<>> AddToSources2d: PROC [sources2d: Source2dSequence, source2d: Source2d] RETURNS [Source2dSequence]; <> <<>> LengthenSources2d: PROC [sources2d: Source2dSequence, amount: REAL ¬ 1.3] RETURNS [Source2dSequence]; <> <<>> CopySources3d: PROC [sources3d: Source3dSequence] RETURNS [Source3dSequence]; <> <<>> AddToSources3d: PROC [sources3d: Source3dSequence, source3d: Source3d] RETURNS [Source3dSequence]; <> <<>> LengthenSources3d: PROC [sources3d: Source3dSequence, amount: REAL ¬ 1.3] RETURNS [Source3dSequence]; <> <<>> ObtainSources2d: PROC [nSources: NAT] RETURNS [Source2dSequence]; <> <<>> ObtainSources3d: PROC [nSources: NAT] RETURNS [Source3dSequence]; <> <<>> ReleaseSources2d: PROC [sources: Source2dSequence]; <> <<>> ReleaseSources3d: PROC [sources: Source3dSequence]; <> <<>> OfSources2d: PROC [q: Pair, sources: Source2dSequence, distanceMode: DistanceMode] RETURNS [REAL]; <> <<>> OfSources3d: PROC [q: Triple, sources: Source3dSequence, distanceMode: DistanceMode] RETURNS [REAL]; <> <> OfPlane: PROC [q: Triple, plane: Plane] RETURNS [Sample]; <> <<>> OfSphere: PROC [q, center: Triple, radiusSqd: REAL] RETURNS [Sample]; <> OfCylinder: PROC [q: Triple, end0, end1: Triple, radiusSqd: REAL] RETURNS [Sample]; <> OfTorus: PROC [q: Triple, minorRadius, majorRadius: REAL] RETURNS [Sample]; <> <<>> END.