SVGravity.mesa
Copyright © 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.
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: BOOLFALSE] 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: BOOLFALSE] 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.