VTK
vtkPlaneWidget.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkPlaneWidget.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 =========================================================================*/
83 #ifndef vtkPlaneWidget_h
84 #define vtkPlaneWidget_h
85 
86 #include "vtkInteractionWidgetsModule.h" // For export macro
88 
89 class vtkActor;
90 class vtkCellPicker;
91 class vtkConeSource;
92 class vtkLineSource;
93 class vtkPlaneSource;
94 class vtkPoints;
95 class vtkPolyData;
96 class vtkPolyDataMapper;
97 class vtkProp;
98 class vtkProperty;
99 class vtkSphereSource;
100 class vtkTransform;
101 class vtkPlane;
102 
103 #define VTK_PLANE_OFF 0
104 #define VTK_PLANE_OUTLINE 1
105 #define VTK_PLANE_WIREFRAME 2
106 #define VTK_PLANE_SURFACE 3
107 
109 {
110 public:
112  static vtkPlaneWidget *New();
113 
115  void PrintSelf(ostream& os, vtkIndent indent);
116 
118 
119  virtual void SetEnabled(int);
120  virtual void PlaceWidget(double bounds[6]);
121  void PlaceWidget()
122  {this->Superclass::PlaceWidget();}
123  void PlaceWidget(double xmin, double xmax, double ymin, double ymax,
124  double zmin, double zmax)
125  {this->Superclass::PlaceWidget(xmin,xmax,ymin,ymax,zmin,zmax);}
127 
129 
130  void SetResolution(int r);
133 
135 
136  void SetOrigin(double x, double y, double z);
137  void SetOrigin(double x[3]);
138  double* GetOrigin();
139  void GetOrigin(double xyz[3]);
141 
143 
145  void SetPoint1(double x, double y, double z);
146  void SetPoint1(double x[3]);
147  double* GetPoint1();
148  void GetPoint1(double xyz[3]);
150 
152 
154  void SetPoint2(double x, double y, double z);
155  void SetPoint2(double x[3]);
156  double* GetPoint2();
157  void GetPoint2(double xyz[3]);
159 
161 
162  void SetCenter(double x, double y, double z);
163  void SetCenter(double x[3]);
164  double* GetCenter();
165  void GetCenter(double xyz[3]);
167 
169 
170  void SetNormal(double x, double y, double z);
171  void SetNormal(double x[3]);
172  double* GetNormal();
173  void GetNormal(double xyz[3]);
175 
177 
183  vtkGetMacro(Representation,int);
185  {this->SetRepresentation(VTK_PLANE_OFF);}
187  {this->SetRepresentation(VTK_PLANE_OUTLINE);}
189  {this->SetRepresentation(VTK_PLANE_WIREFRAME);}
191  {this->SetRepresentation(VTK_PLANE_SURFACE);}
193 
195 
199  vtkSetMacro(NormalToXAxis,int);
200  vtkGetMacro(NormalToXAxis,int);
201  vtkBooleanMacro(NormalToXAxis,int);
202  vtkSetMacro(NormalToYAxis,int);
203  vtkGetMacro(NormalToYAxis,int);
204  vtkBooleanMacro(NormalToYAxis,int);
205  vtkSetMacro(NormalToZAxis,int);
206  vtkGetMacro(NormalToZAxis,int);
207  vtkBooleanMacro(NormalToZAxis,int);
209 
218 
224  void GetPlane(vtkPlane *plane);
225 
232 
235  void UpdatePlacement(void);
236 
238 
242  vtkGetObjectMacro(SelectedHandleProperty,vtkProperty);
244 
246 
250  vtkGetObjectMacro(SelectedPlaneProperty,vtkProperty);
252 
253 protected:
256 
257 //BTX - manage the state of the widget
258  int State;
260  {
261  Start=0,
267  Outside
268  };
269 //ETX
270 
271  //handles the events
272  static void ProcessEvents(vtkObject* object,
273  unsigned long event,
274  void* clientdata,
275  void* calldata);
276 
277  // ProcessEvents() dispatches to these methods.
284  void OnMouseMove();
285 
286  // controlling ivars
292 
293  // the plane
298  void HighlightPlane(int highlight);
299 
300  // glyphs representing hot spots (e.g., handles)
305  void HandlesOn(double length);
306  void HandlesOff();
307  int HighlightHandle(vtkProp *prop); //returns cell id
308  virtual void SizeHandles();
309 
310  // the normal cone
314  void HighlightNormal(int highlight);
315 
316  // the normal line
320 
321  // the normal cone
325 
326  // the normal line
330 
331  // Do the picking
335 
336  // Register internal Pickers within PickingManager
337  virtual void RegisterPickers();
338 
339  // Methods to manipulate the hexahedron.
340  void MoveOrigin(double *p1, double *p2);
341  void MovePoint1(double *p1, double *p2);
342  void MovePoint2(double *p1, double *p2);
343  void MovePoint3(double *p1, double *p2);
344  void Rotate(int X, int Y, double *p1, double *p2, double *vpn);
345  void Spin(double *p1, double *p2);
346  void Scale(double *p1, double *p2, int X, int Y);
347  void Translate(double *p1, double *p2);
348  void Push(double *p1, double *p2);
349 
350  // Plane normal, normalized
351  double Normal[3];
352 
353  // Transform the hexahedral points (used for rotations)
355 
356  // Properties used to control the appearance of selected objects and
357  // the manipulator in general.
363 
365 
368 
369 private:
370  vtkPlaneWidget(const vtkPlaneWidget&); //Not implemented
371  void operator=(const vtkPlaneWidget&); //Not implemented
372 };
373 
374 #endif
vtkPolyDataMapper
map vtkPolyData to graphics primitives
Definition: vtkPolyDataMapper.h:42
vtkPlaneWidget::PlaceWidget
virtual void PlaceWidget(double bounds[6])
vtkPoints
represent and manipulate 3D points
Definition: vtkPoints.h:39
vtkgl::z
GLdouble GLdouble z
Definition: vtkgl.h:11754
vtkPlane
perform various plane computations
Definition: vtkPlane.h:37
vtkPlaneWidget::Scaling
@ Scaling
Definition: vtkPlaneWidget.h:263
vtkPlaneWidget::SelectRepresentation
void SelectRepresentation()
vtkGetObjectMacro
#define vtkGetObjectMacro(name, type)
Definition: vtkSetGet.h:232
vtkPlaneWidget::SetRepresentationToSurface
void SetRepresentationToSurface()
Definition: vtkPlaneWidget.h:190
vtkPlaneWidget::LineSource2
vtkLineSource * LineSource2
Definition: vtkPlaneWidget.h:329
vtkPlaneWidget::OnMiddleButtonUp
void OnMiddleButtonUp()
vtkPlaneWidget::RegisterPickers
virtual void RegisterPickers()
vtkPlaneWidget::ProcessEvents
static void ProcessEvents(vtkObject *object, unsigned long event, void *clientdata, void *calldata)
vtkPlaneWidget::HandlesOn
void HandlesOn(double length)
vtkPlaneWidget::CurrentHandle
vtkActor * CurrentHandle
Definition: vtkPlaneWidget.h:334
vtkPlaneWidget::ConeActor
vtkActor * ConeActor
Definition: vtkPlaneWidget.h:311
vtkPlaneWidget::Handle
vtkActor ** Handle
Definition: vtkPlaneWidget.h:301
vtkPlaneWidget::GetPolyData
void GetPolyData(vtkPolyData *pd)
vtkPlaneWidget::SetEnabled
virtual void SetEnabled(int)
vtkPlaneWidget::GetCenter
double * GetCenter()
vtkPlaneWidget::WidgetState
WidgetState
Definition: vtkPlaneWidget.h:260
vtkPlaneSource
create an array of quadrilaterals located in a plane
Definition: vtkPlaneSource.h:60
vtkX3D::Normal
@ Normal
Definition: vtkX3D.h:45
vtkPlaneWidget::LineActor
vtkActor * LineActor
Definition: vtkPlaneWidget.h:317
vtkPlaneWidget::State
int State
Definition: vtkPlaneWidget.h:258
vtkPlaneWidget::Spin
void Spin(double *p1, double *p2)
vtkConeSource
generate polygonal cone
Definition: vtkConeSource.h:44
vtkTypeMacro
#define vtkTypeMacro(thisClass, superclass)
Definition: vtkSetGet.h:642
vtkPlaneWidget::SetPoint1
void SetPoint1(double x, double y, double z)
vtkObject
abstract base class for most VTK objects
Definition: vtkObject.h:62
vtkPlaneWidget::GetNormal
double * GetNormal()
vtkPlaneWidget::SelectedHandleProperty
vtkProperty * SelectedHandleProperty
Definition: vtkPlaneWidget.h:359
vtkInteractionWidgetsModule.h
vtkgl::x
GLint GLint GLint GLint GLint x
Definition: vtkgl.h:11318
vtkPlaneWidget::GetCenter
void GetCenter(double xyz[3])
vtkPlaneWidget::ConeSource2
vtkConeSource * ConeSource2
Definition: vtkPlaneWidget.h:324
vtkPlaneWidget::Pushing
@ Pushing
Definition: vtkPlaneWidget.h:264
vtkPlaneWidget::ConeSource
vtkConeSource * ConeSource
Definition: vtkPlaneWidget.h:313
vtkPlaneWidget::PlanePicker
vtkCellPicker * PlanePicker
Definition: vtkPlaneWidget.h:333
vtkPlaneWidget::GetPlane
void GetPlane(vtkPlane *plane)
vtkPlaneWidget::PlaneActor
vtkActor * PlaneActor
Definition: vtkPlaneWidget.h:294
vtkPlaneWidget::MovePoint1
void MovePoint1(double *p1, double *p2)
vtkPlaneWidget::PlaceWidget
void PlaceWidget(double xmin, double xmax, double ymin, double ymax, double zmin, double zmax)
Definition: vtkPlaneWidget.h:123
vtkTransform
describes linear transformations via a 4x4 matrix
Definition: vtkTransform.h:60
vtkPlaneWidget
3D widget for manipulating a finite plane
Definition: vtkPlaneWidget.h:109
vtkgl::length
GLuint GLsizei GLsizei * length
Definition: vtkgl.h:11992
vtkgl::event
struct _cl_event * event
Definition: vtkgl.h:14387
vtkPlaneWidget::SetPoint1
void SetPoint1(double x[3])
vtkPlaneWidget::Rotate
void Rotate(int X, int Y, double *p1, double *p2, double *vpn)
vtkPlaneWidget::SetCenter
void SetCenter(double x, double y, double z)
vtkPlaneWidget::LineMapper2
vtkPolyDataMapper * LineMapper2
Definition: vtkPlaneWidget.h:328
vtkPlaneWidget::Spinning
@ Spinning
Definition: vtkPlaneWidget.h:266
vtkPlaneWidget::GeneratePlane
void GeneratePlane()
vtkPlaneWidget::SetNormal
void SetNormal(double x[3])
vtkPlaneWidget::SizeHandles
virtual void SizeHandles()
vtkSetClampMacro
#define vtkSetClampMacro(name, type, min, max)
Definition: vtkSetGet.h:143
vtkPlaneWidget::HandleProperty
vtkProperty * HandleProperty
Definition: vtkPlaneWidget.h:358
vtkPlaneWidget::GetPoint2
void GetPoint2(double xyz[3])
vtkPlaneWidget::Scale
void Scale(double *p1, double *p2, int X, int Y)
vtkPlaneWidget::SetOrigin
void SetOrigin(double x, double y, double z)
vtkPlaneWidget::SetNormal
void SetNormal(double x, double y, double z)
vtkPlaneWidget::PlaneProperty
vtkProperty * PlaneProperty
Definition: vtkPlaneWidget.h:360
vtkPlaneWidget::SetRepresentationToOutline
void SetRepresentationToOutline()
Definition: vtkPlaneWidget.h:186
vtkPlaneWidget::OnRightButtonUp
void OnRightButtonUp()
vtkSphereSource
create a polygonal sphere centered at the origin
Definition: vtkSphereSource.h:46
vtkPlaneWidget::LineMapper
vtkPolyDataMapper * LineMapper
Definition: vtkPlaneWidget.h:318
vtkPlaneWidget::vtkPlaneWidget
vtkPlaneWidget()
vtkPlaneWidget::GetResolution
int GetResolution()
vtkPlaneWidget::SetRepresentationToOff
void SetRepresentationToOff()
Definition: vtkPlaneWidget.h:184
vtkActor
represents an object (geometry & properties) in a rendered scene
Definition: vtkActor.h:51
vtkPlaneWidget::SetPoint2
void SetPoint2(double x, double y, double z)
vtkPlaneWidget::MoveOrigin
void MoveOrigin(double *p1, double *p2)
vtkPlaneWidget::ConeActor2
vtkActor * ConeActor2
Definition: vtkPlaneWidget.h:322
vtkIndent
a simple class to control print indentation
Definition: vtkIndent.h:39
VTK_PLANE_WIREFRAME
#define VTK_PLANE_WIREFRAME
Definition: vtkPlaneWidget.h:105
vtkPlaneWidget::PlaneOutline
vtkPolyData * PlaneOutline
Definition: vtkPlaneWidget.h:297
vtkPlaneWidget::LineActor2
vtkActor * LineActor2
Definition: vtkPlaneWidget.h:327
vtkPlaneWidget::NormalToZAxis
int NormalToZAxis
Definition: vtkPlaneWidget.h:289
vtkPlaneWidget::LineSource
vtkLineSource * LineSource
Definition: vtkPlaneWidget.h:319
vtkPlaneWidget::GetPolyDataAlgorithm
vtkPolyDataAlgorithm * GetPolyDataAlgorithm()
vtkGetMacro
#define vtkGetMacro(name, type)
Definition: vtkSetGet.h:93
vtkPlaneWidget::GetOrigin
double * GetOrigin()
vtkPlaneWidget::LastPickValid
int LastPickValid
Definition: vtkPlaneWidget.h:366
vtkLineSource
create a line defined by two end points
Definition: vtkLineSource.h:42
vtkgl::zmax
GLclampd zmax
Definition: vtkgl.h:17479
vtkPlaneWidget::SetPoint2
void SetPoint2(double x[3])
vtkPlaneWidget::SetOrigin
void SetOrigin(double x[3])
vtkPlaneWidget::UpdatePlacement
void UpdatePlacement(void)
vtkPlaneWidget::NormalToYAxis
int NormalToYAxis
Definition: vtkPlaneWidget.h:288
vtkPlaneWidget::PlaceWidget
void PlaceWidget()
Definition: vtkPlaneWidget.h:121
vtkPlaneWidget::MovePoint3
void MovePoint3(double *p1, double *p2)
vtkPlaneWidget::SelectedPlaneProperty
vtkProperty * SelectedPlaneProperty
Definition: vtkPlaneWidget.h:361
vtkBooleanMacro
vtkBooleanMacro(IgnoreDriverBugs, bool)
vtkPlaneWidget::Representation
int Representation
Definition: vtkPlaneWidget.h:290
vtkPlaneWidget::PrintSelf
void PrintSelf(ostream &os, vtkIndent indent)
vtkSetMacro
vtkSetMacro(IgnoreDriverBugs, bool)
vtkProp
abstract superclass for all actors, volumes and annotations
Definition: vtkProp.h:50
vtkPlaneWidget::SetResolution
void SetResolution(int r)
vtkPlaneWidget::MovePoint2
void MovePoint2(double *p1, double *p2)
vtkPlaneWidget::HighlightNormal
void HighlightNormal(int highlight)
VTK_PLANE_SURFACE
#define VTK_PLANE_SURFACE
Definition: vtkPlaneWidget.h:106
vtkPlaneWidget::GetNormal
void GetNormal(double xyz[3])
vtkPlaneWidget::OnMouseMove
void OnMouseMove()
vtkgl::r
GLdouble GLdouble GLdouble r
Definition: vtkgl.h:11610
vtkPlaneWidget::HandlesOff
void HandlesOff()
VTKINTERACTIONWIDGETS_EXPORT
#define VTKINTERACTIONWIDGETS_EXPORT
Definition: vtkInteractionWidgetsModule.h:15
vtkgl::y
GLint GLint GLint GLint GLint GLint y
Definition: vtkgl.h:11318
vtk3DWidget::PlaceWidget
virtual void PlaceWidget()
vtkPlaneWidget::OnLeftButtonUp
void OnLeftButtonUp()
vtkPlaneWidget::Push
void Push(double *p1, double *p2)
VTK_PLANE_OFF
#define VTK_PLANE_OFF
Definition: vtkPlaneWidget.h:103
vtkPlaneWidget::GetPoint1
void GetPoint1(double xyz[3])
vtkPlaneWidget::ConeMapper
vtkPolyDataMapper * ConeMapper
Definition: vtkPlaneWidget.h:312
vtkPolyDataSourceWidget
abstract PolyDataSource-based 3D widget
Definition: vtkPolyDataSourceWidget.h:45
vtkPolyData
concrete dataset represents vertices, lines, polygons, and triangle strips
Definition: vtkPolyData.h:84
vtkPlaneWidget::OnRightButtonDown
void OnRightButtonDown()
vtkPlaneWidget::HandleGeometry
vtkSphereSource ** HandleGeometry
Definition: vtkPlaneWidget.h:303
vtkPlaneWidget::NormalToXAxis
int NormalToXAxis
Definition: vtkPlaneWidget.h:287
vtkPlaneWidget::ConeMapper2
vtkPolyDataMapper * ConeMapper2
Definition: vtkPlaneWidget.h:323
vtkPlaneWidget::HandlePicker
vtkCellPicker * HandlePicker
Definition: vtkPlaneWidget.h:332
vtkPlaneWidget::OnMiddleButtonDown
void OnMiddleButtonDown()
vtkPlaneWidget::Translate
void Translate(double *p1, double *p2)
vtkPlaneWidget::PlaneMapper
vtkPolyDataMapper * PlaneMapper
Definition: vtkPlaneWidget.h:295
vtkPlaneWidget::SetRepresentationToWireframe
void SetRepresentationToWireframe()
Definition: vtkPlaneWidget.h:188
vtkProperty
represent surface properties of a geometric object
Definition: vtkProperty.h:64
vtkPlaneWidget::HighlightPlane
void HighlightPlane(int highlight)
vtkPlaneWidget::SetCenter
void SetCenter(double x[3])
vtkPlaneWidget::GetPoint2
double * GetPoint2()
vtkPlaneWidget::CreateDefaultProperties
void CreateDefaultProperties()
vtkPlaneWidget::Moving
@ Moving
Definition: vtkPlaneWidget.h:262
vtkPlaneWidget::GetPoint1
double * GetPoint1()
vtkPlaneWidget::PositionHandles
void PositionHandles()
vtkCellPicker
ray-cast cell picker for all kinds of Prop3Ds
Definition: vtkCellPicker.h:69
vtkPlaneWidget::HandleMapper
vtkPolyDataMapper ** HandleMapper
Definition: vtkPlaneWidget.h:302
vtkPlaneWidget::GetOrigin
void GetOrigin(double xyz[3])
vtkPlaneWidget::OnLeftButtonDown
void OnLeftButtonDown()
vtkPlaneWidget::New
static vtkPlaneWidget * New()
vtkPlaneWidget::SetPlaneProperty
virtual void SetPlaneProperty(vtkProperty *)
vtkPlaneWidget::Transform
vtkTransform * Transform
Definition: vtkPlaneWidget.h:354
vtkPlaneWidget::PlaneSource
vtkPlaneSource * PlaneSource
Definition: vtkPlaneWidget.h:296
vtkPlaneWidget::Rotating
@ Rotating
Definition: vtkPlaneWidget.h:265
vtkPlaneWidget::HandleSizeFactor
double HandleSizeFactor
Definition: vtkPlaneWidget.h:367
vtkPlaneWidget::~vtkPlaneWidget
~vtkPlaneWidget()
vtkPlaneWidget::HighlightHandle
int HighlightHandle(vtkProp *prop)
vtkPolyDataSourceWidget.h
VTK_PLANE_OUTLINE
#define VTK_PLANE_OUTLINE
Definition: vtkPlaneWidget.h:104
vtkPolyDataAlgorithm
Superclass for algorithms that produce only polydata as output.
Definition: vtkPolyDataAlgorithm.h:44