VTK
vtkPicker.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkPicker.h
5 
6  Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
7  All rights reserved.
8  See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
9 
10  This software is distributed WITHOUT ANY WARRANTY; without even
11  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
12  PURPOSE. See the above copyright notice for more information.
13 
14 =========================================================================*/
46 #ifndef vtkPicker_h
47 #define vtkPicker_h
48 
49 #include "vtkRenderingCoreModule.h" // For export macro
50 #include "vtkAbstractPropPicker.h"
51 
53 class vtkDataSet;
54 class vtkTransform;
55 class vtkActorCollection;
57 class vtkPoints;
58 
60 {
61 public:
62  static vtkPicker *New();
64  void PrintSelf(ostream& os, vtkIndent indent);
65 
67 
70  vtkSetMacro(Tolerance, double);
71  vtkGetMacro(Tolerance, double);
73 
75 
77  vtkGetVectorMacro(MapperPosition, double, 3);
79 
81 
84 
86 
90 
92 
95  { return this->Prop3Ds; }
97 
102 
104 
108  { return this->PickedPositions; }
110 
112 
116  virtual int Pick(double selectionX, double selectionY, double selectionZ,
117  vtkRenderer *renderer);
119 
121 
125  int Pick(double selectionPt[3], vtkRenderer *ren)
126  { return this->Pick(selectionPt[0], selectionPt[1], selectionPt[2], ren); }
128 
129 protected:
132 
134  double tMin, double mapperPos[3]);
135  virtual double IntersectWithLine(double p1[3], double p2[3], double tol,
138  virtual void Initialize();
139 
140  double Tolerance; //tolerance for computation (% of window)
141  double MapperPosition[3]; //selection point in untransformed coordinates
142 
143  vtkAbstractMapper3D *Mapper; //selected mapper (if the prop has a mapper)
144  vtkDataSet *DataSet; //selected dataset (if there is one)
145 
146  double GlobalTMin; //parametric coordinate along pick ray where hit occurred
147  vtkTransform *Transform; //use to perform ray transformation
148  vtkActorCollection *Actors; //candidate actors (based on bounding box)
149  vtkProp3DCollection *Prop3Ds; //candidate actors (based on bounding box)
150  vtkPoints *PickedPositions; // candidate positions
151 
152 private:
153  vtkPicker(const vtkPicker&); // Not implemented.
154  void operator=(const vtkPicker&); // Not implemented.
155 };
156 
157 #endif
vtkPoints
represent and manipulate 3D points
Definition: vtkPoints.h:39
vtkPicker::Tolerance
double Tolerance
Definition: vtkPicker.h:140
vtkPicker::Pick
virtual int Pick(double selectionX, double selectionY, double selectionZ, vtkRenderer *renderer)
vtkGetObjectMacro
#define vtkGetObjectMacro(name, type)
Definition: vtkSetGet.h:232
vtkPicker::Transform
vtkTransform * Transform
Definition: vtkPicker.h:147
vtkPicker::Initialize
virtual void Initialize()
vtkgl::m
const GLfloat * m
Definition: vtkgl.h:18169
vtkPicker::Prop3Ds
vtkProp3DCollection * Prop3Ds
Definition: vtkPicker.h:149
vtkProp3D
represents an 3D object for placement in a rendered scene
Definition: vtkProp3D.h:43
vtkPicker::GlobalTMin
double GlobalTMin
Definition: vtkPicker.h:146
vtkTypeMacro
#define vtkTypeMacro(thisClass, superclass)
Definition: vtkSetGet.h:642
vtkPicker::PrintSelf
void PrintSelf(ostream &os, vtkIndent indent)
vtkPicker::Pick
int Pick(double selectionPt[3], vtkRenderer *ren)
Definition: vtkPicker.h:125
vtkPicker::New
static vtkPicker * New()
vtkPicker::GetProp3Ds
vtkProp3DCollection * GetProp3Ds()
Definition: vtkPicker.h:94
vtkPicker
superclass for 3D geometric pickers (uses ray cast)
Definition: vtkPicker.h:60
vtkTransform
describes linear transformations via a 4x4 matrix
Definition: vtkTransform.h:60
vtkGetVectorMacro
#define vtkGetVectorMacro(name, type, count)
Definition: vtkSetGet.h:424
vtkAssemblyPath
a list of nodes that form an assembly path
Definition: vtkAssemblyPath.h:41
vtkPicker::~vtkPicker
~vtkPicker()
vtkPicker::vtkPicker
vtkPicker()
vtkPicker::MarkPicked
void MarkPicked(vtkAssemblyPath *path, vtkProp3D *p, vtkAbstractMapper3D *m, double tMin, double mapperPos[3])
vtkPicker::Actors
vtkActorCollection * Actors
Definition: vtkPicker.h:148
vtkPicker::DataSet
vtkDataSet * DataSet
Definition: vtkPicker.h:144
vtkPicker::PickedPositions
vtkPoints * PickedPositions
Definition: vtkPicker.h:150
vtkPicker::Mapper
vtkAbstractMapper3D * Mapper
Definition: vtkPicker.h:143
vtkIndent
a simple class to control print indentation
Definition: vtkIndent.h:39
vtkRenderingCoreModule.h
vtkgl::path
GLsizei const GLchar ** path
Definition: vtkgl.h:13835
vtkAbstractPropPicker.h
vtkGetMacro
#define vtkGetMacro(name, type)
Definition: vtkSetGet.h:93
vtkAbstractPropPicker
abstract API for pickers that can pick an instance of vtkProp
Definition: vtkAbstractPropPicker.h:79
vtkDataSet
abstract class to specify dataset behavior
Definition: vtkDataSet.h:62
vtkSetMacro
vtkSetMacro(IgnoreDriverBugs, bool)
vtkAbstractMapper3D
abstract class specifies interface to map 3D data
Definition: vtkAbstractMapper3D.h:42
vtkPicker::IntersectWithLine
virtual double IntersectWithLine(double p1[3], double p2[3], double tol, vtkAssemblyPath *path, vtkProp3D *p, vtkAbstractMapper3D *m)
vtkRenderer
abstract specification for renderers
Definition: vtkRenderer.h:64
vtkPicker::GetActors
vtkActorCollection * GetActors()
vtkPicker::GetPickedPositions
vtkPoints * GetPickedPositions()
Definition: vtkPicker.h:107
vtkActorCollection
a list of actors
Definition: vtkActorCollection.h:36
vtkgl::p
GLfloat GLfloat p
Definition: vtkgl.h:15717
VTKRENDERINGCORE_EXPORT
#define VTKRENDERINGCORE_EXPORT
Definition: vtkRenderingCoreModule.h:15
vtkAbstractPicker::Pick
virtual int Pick(double selectionX, double selectionY, double selectionZ, vtkRenderer *renderer)=0
vtkProp3DCollection
a list of 3D props
Definition: vtkProp3DCollection.h:37