3D Graphics Programming with QuickDraw 3D

15 Summary of Pick Objects

15 C Summary

15 Constants

#define kQ3ReturnAllHits              0

Pick Object Types

#define kQ3PickTypeWindowPoint             Q3_OBJECT_TYPE('p','k','w','p')
#define kQ3PickTypeWindowRect             Q3_OBJECT_TYPE('p','k','w','r')

Shape Part and Mesh Part Types

#define kQ3ShapePartTypeMeshPart             Q3_OBJECT_TYPE('s','p','m','h')
#define kQ3MeshPartTypeMeshFacePart             Q3_OBJECT_TYPE('m','f','a','c')
#define kQ3MeshPartTypeMeshEdgePart             Q3_OBJECT_TYPE('m','e','d','g')
#define kQ3MeshPartTypeMeshVertexPart             Q3_OBJECT_TYPE('m','v','t','x')

Hit List Sorting Values

typedef enum TQ3PickSort {
 kQ3PickSortNone,
 kQ3PickSortNearToFar,
 kQ3PickSortFarToNear
} TQ3PickSort;

Hit Information Masks

typedef enum TQ3PickDetailMasks {
 kQ3PickDetailNone                 = 0,
 kQ3PickDetailMaskPickID                 = 1 << 0,
 kQ3PickDetailMaskPath                = 1 << 1,
 kQ3PickDetailMaskObject                = 1 << 2,
 kQ3PickDetailMaskLocalToWorldMatrix                 = 1 << 3,
 kQ3PickDetailMaskXYZ                = 1 << 4,
 kQ3PickDetailMaskDistance                = 1 << 5,
 kQ3PickDetailMaskNormal                 = 1 << 6,
 kQ3PickDetailMaskShapePart                = 1 << 7} TQ3PickDetailMasks;

Pick Parts Values

typedef enum TQ3PickPartsMasks {
 kQ3PickPartsObject              = 0,
 kQ3PickPartsMaskFace              = 1 << 0,
 kQ3PickPartsMaskEdge              = 1 << 1,
 kQ3PickPartsMaskVertex              = 1 << 2
} TQ3PickPartsMasks;

15 Data Types

typedef unsigned long               TQ3PickDetail;
typedef unsigned long               TQ3PickParts;
typedef TQ3ShapePartObject               TQ3MeshPartObject;
typedef TQ3MeshPartObject               TQ3MeshFacePartObject;
typedef TQ3MeshPartObject               TQ3MeshEdgePartObject;
typedef TQ3MeshPartObject               TQ3MeshVertexPartObject;

Pick Data Structure

typedef struct TQ3PickData {
 TQ3PickSort         sort;
 TQ3PickDetail         mask;
 unsigned long         numHitsToReturn;
} TQ3PickData;

Window-Point Pick Data Structure

typedef struct TQ3WindowPointPickData {
 TQ3PickData         data;
 TQ3Point2D         point;
 float         vertexTolerance;
 float         edgeTolerance;
} TQ3WindowPointPickData;

Window-Rectangle Pick Data Structure

typedef struct TQ3WindowRectPickData {
 TQ3PickData         data;
 TQ3Area         rect;
} TQ3WindowRectPickData;

Hit Path Structure

typedef struct TQ3HitPath {
 unsigned long         depth;
 TQ3GroupPosition         *positions;
} TQ3HitPath;

Hit Data Structure

typedef struct TQ3HitData {
 TQ3PickParts         part;
 TQ3PickDetail         validMask;
 unsigned long         pickID;
 TQ3HitPath         path;
 TQ3Object         object;
 TQ3Matrix4x4         localToWorldMatrix;
 TQ3Point3D         xyzPoint;
 float         distance;
 TQ3Vector3D         normal;
 TQ3ShapePartObject         shapePart;
} TQ3HitData;

15 Pick Objects Routines

Managing Pick Objects

TQ3ObjectType Q3Pick_GetType (TQ3PickObject pick);
TQ3Status Q3Pick_GetData (TQ3PickObject pick, TQ3PickData *data);
TQ3Status Q3Pick_SetData (TQ3PickObject pick, const TQ3PickData *data);
TQ3Status Q3Pick_GetVertexTolerance (
TQ3PickObject pick, float *vertexTolerance);
TQ3Status Q3Pick_SetVertexTolerance (
TQ3PickObject pick, float vertexTolerance);
TQ3Status Q3Pick_GetEdgeTolerance (
TQ3PickObject pick, float *edgeTolerance);
TQ3Status Q3Pick_SetEdgeTolerance (
TQ3PickObject pick, float edgeTolerance);
TQ3Status Q3Pick_GetNumHits (TQ3PickObject pick, unsigned long *numHits);
TQ3Status Q3Pick_GetHitData (TQ3PickObject pick, 
unsigned long index, 
TQ3HitData *hitData);
TQ3Status Q3Hit_EmptyData (TQ3HitData *hitData);
TQ3Status Q3Pick_EmptyHitList (TQ3PickObject pick);

Managing Shape Parts and Mesh Parts

TQ3Status Q3ShapePart_GetShape (TQ3ShapePartObject shapePartObject, 
TQ3ShapeObject *shapeObject);
TQ3ObjectType Q3ShapePart_GetType (
TQ3ShapePartObject shapePartObject);
TQ3ObjectType Q3MeshPart_GetType (
TQ3MeshPartObject meshPartObject);
TQ3Status Q3MeshPart_GetComponent (
TQ3MeshPartObject meshPartObject, 
TQ3MeshComponent *component);
TQ3Status Q3MeshFacePart_GetFace (
TQ3MeshFacePartObject meshFacePartObject, 
TQ3MeshFace *face);
TQ3Status Q3MeshEdgePart_GetEdge (
TQ3MeshEdgePartObject meshEdgePartObject, 
TQ3MeshEdge *edge);
TQ3Status Q3MeshVertexPart_GetVertex (
TQ3MeshVertexPartObject meshVertexPartObject, 
TQ3MeshVertex *vertex);

Picking With Window Points

TQ3PickObject Q3WindowPointPick_New (
const TQ3WindowPointPickData *data);
TQ3Status Q3WindowPointPick_GetPoint (
TQ3PickObject pick, TQ3Point2D *point);
TQ3Status Q3WindowPointPick_SetPoint (
TQ3PickObject pick, const TQ3Point2D *point);
TQ3Status Q3WindowPointPick_GetData (
TQ3PickObject pick, 
TQ3WindowPointPickData *data);
TQ3Status Q3WindowPointPick_SetData (
TQ3PickObject pick, 
const TQ3WindowPointPickData *data);

Picking With Window Rectangles

TQ3PickObject Q3WindowRectPick_New (
const TQ3WindowRectPickData *data);
TQ3Status Q3WindowRectPick_GetRect (
TQ3PickObject pick, TQ3Area *rect);
TQ3Status Q3WindowRectPick_SetRect (
TQ3PickObject pick, const TQ3Area *rect);
TQ3Status Q3WindowRectPick_GetData (
TQ3PickObject pick, 
TQ3WindowRectPickData *data);
TQ3Status Q3WindowRectPick_SetData (
TQ3PickObject pick, 
const TQ3WindowRectPickData *data);

15 Warnings
kQ3WarningPickParamOutside 

15 - C Summary
15 - Constants
Pick Object Types
Shape Part and Mesh Part Types
Hit List Sorting Values
Hit Information Masks
Pick Parts Values
15 - Data Types
Pick Data Structure
Window-Point Pick Data Structure
Window-Rectangle Pick Data Structure
Hit Path Structure
Hit Data Structure
15 - Pick Objects Routines
Managing Pick Objects
Managing Shape Parts and Mesh Parts
Picking With Window Points
Picking With Window Rectangles
15 - Warnings

3D Graphics Programming with QuickDraw 3D - 17 OCT 1995

© Apple Computer, Inc.

Let us know what you think of these prototype pages.

Generated with Harlequin WebMaker