DIRECTORY SV2d, SV3d, SVInterfaceTypes, SVSceneTypes, SVStoragePools; SVGravity: CEDAR DEFINITIONS = BEGIN AlignBag: TYPE = SVInterfaceTypes.AlignBag; Slice: TYPE = SVSceneTypes.Slice; Point2d: TYPE = SV2d.Point2d; Point3d: TYPE = SV3d.Point3d; Camera: TYPE = SVSceneTypes.Camera; CSGTree: TYPE = SVSceneTypes.CSGTree; FeatureData: TYPE = SVInterfaceTypes.FeatureData; GravityType: TYPE = SVInterfaceTypes.GravityType; Scene: TYPE = SVSceneTypes.Scene; SearchDepth: TYPE = SVSceneTypes.SearchDepth; StoragePool: TYPE = SVStoragePools.StoragePool; TriggerBag: TYPE = SVInterfaceTypes.TriggerBag; Vector3d: TYPE = SV3d.Vector3d; SVData: TYPE = SVInterfaceTypes.SVData; NearFeatures: TYPE = REF NearFeaturesObj; NearFeaturesObj: TYPE = RECORD [ features: SEQUENCE len: NAT OF FeatureData ]; NearPoints: TYPE = REF NearPointsObj; NearPointsObj: TYPE = RECORD [ points: SEQUENCE len: NAT OF Point3d ]; NearDistances: TYPE = REF NearDistancesObj; NearDistancesObj: TYPE = RECORD [ distances: SEQUENCE len: NAT OF REAL ]; GoodPoint: TYPE = SVInterfaceTypes.GoodPoint; NearVertexEdgeAndFaces: TYPE = SVInterfaceTypes.NearVertexEdgeAndFaces; FeatureCycler: TYPE = SVInterfaceTypes.FeatureCycler; RayMap: PROC [cameraPt: Point2d, t: REAL, alignBag: AlignBag, sceneBag: TriggerBag, svData: SVData, intersections: BOOL _ FALSE] RETURNS [surfacePtWorld: Point3d, normalWorld: Vector3d, feature: FeatureData, hitData: REF ANY]; PointsPreferred: PROC [cameraPt: Point2d, t: REAL, alignBag: AlignBag, sceneBag: TriggerBag, svData: SVData, intersections: BOOL] RETURNS [surfacePtWorld: Point3d, normalWorld: Vector3d, feature: FeatureData, hitData: REF ANY]; LinesPreferred: PROC [cameraPt: Point2d, t: REAL, alignBag: AlignBag, sceneBag: TriggerBag, svData: SVData, intersections: BOOL] RETURNS [surfacePtWorld: Point3d, normalWorld: Vector3d, feature: FeatureData, hitData: REF ANY]; FacesPreferred: PROC [cameraPt: Point2d, t: REAL, alignBag: AlignBag, sceneBag: TriggerBag, svData: SVData] RETURNS [surfacePtWorld: Point3d, normalWorld: Vector3d, feature: FeatureData, hitData: REF ANY]; RayMapCycler: PROC [cameraPt: Point2d, t: REAL, alignBag: AlignBag, sceneBag: TriggerBag, svData: SVData, intersections: BOOL _ FALSE] RETURNS [featureCycler: FeatureCycler]; PointsPreferredCycler: PROC [cameraPt: Point2d, t: REAL, alignBag: AlignBag, sceneBag: TriggerBag, svData: SVData, intersections: BOOL, maxDimension: [0..2] _ 2] RETURNS [featureCycler: FeatureCycler]; LinesPreferredCycler: PROC [cameraPt: Point2d, t: REAL, alignBag: AlignBag, sceneBag: TriggerBag, svData: SVData, intersections: BOOL, maxDimension: [0..2] _ 2] RETURNS [featureCycler: FeatureCycler]; FacesPreferredCycler: PROC [cameraPt: Point2d, t: REAL, alignBag: AlignBag, sceneBag: TriggerBag, svData: SVData] RETURNS [featureCycler: FeatureCycler]; FirstFeature: PROC [featureCycler: FeatureCycler] RETURNS [surfacePtWorld: Point3d, normalWorld: Vector3d, feature: FeatureData, hitData: REF ANY]; NextFeature: PROC [featureCycler: FeatureCycler] RETURNS [surfacePtWorld: Point3d, normalWorld: Vector3d, feature: FeatureData, hitData: REF ANY]; PreviousFeature: PROC [featureCycler: FeatureCycler] RETURNS [surfacePtWorld: Point3d, normalWorld: Vector3d, feature: FeatureData, hitData: REF ANY]; NewGravityPool: PROC [] RETURNS [gravityPool: REF ANY]; END. âSVGravity.mesa Copyright c 1986 by Xerox Corporation. All rights reserved. Last edited by Bier on February 17, 1987 11:19:15 pm PST Contents: Routines to snap the skitter to faces, segments, and points in the scene. Êž˜J˜Icodešœ™Kšœ Ïmœ1™