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 =========================================================================*/
81 #ifndef vtkPlaneWidget_h
82 #define vtkPlaneWidget_h
83 
84 #include "vtkInteractionWidgetsModule.h" // For export macro
86 
87 class vtkActor;
88 class vtkCellPicker;
89 class vtkConeSource;
90 class vtkLineSource;
91 class vtkPlaneSource;
92 class vtkPoints;
93 class vtkPolyData;
94 class vtkPolyDataMapper;
95 class vtkProp;
96 class vtkProperty;
97 class vtkSphereSource;
98 class vtkTransform;
99 class vtkPlane;
100 
101 #define VTK_PLANE_OFF 0
102 #define VTK_PLANE_OUTLINE 1
103 #define VTK_PLANE_WIREFRAME 2
104 #define VTK_PLANE_SURFACE 3
105 
106 class VTKINTERACTIONWIDGETS_EXPORT vtkPlaneWidget : public vtkPolyDataSourceWidget
107 {
108 public:
112  static vtkPlaneWidget *New();
113 
115  void PrintSelf(ostream& os, vtkIndent indent) override;
116 
118 
121  void SetEnabled(int) override;
122  void PlaceWidget(double bounds[6]) override;
123  void PlaceWidget() override
124  {this->Superclass::PlaceWidget();}
125  void PlaceWidget(double xmin, double xmax, double ymin, double ymax,
126  double zmin, double zmax) override
127  {this->Superclass::PlaceWidget(xmin,xmax,ymin,ymax,zmin,zmax);}
129 
131 
134  void SetResolution(int r);
137 
139 
142  void SetOrigin(double x, double y, double z);
143  void SetOrigin(double x[3]);
144  double* GetOrigin() VTK_SIZEHINT(3);
145  void GetOrigin(double xyz[3]);
147 
149 
152  void SetPoint1(double x, double y, double z);
153  void SetPoint1(double x[3]);
154  double* GetPoint1() VTK_SIZEHINT(3);
155  void GetPoint1(double xyz[3]);
157 
159 
162  void SetPoint2(double x, double y, double z);
163  void SetPoint2(double x[3]);
164  double* GetPoint2() VTK_SIZEHINT(3);
165  void GetPoint2(double xyz[3]);
167 
169 
172  void SetCenter(double x, double y, double z);
173  void SetCenter(double x[3]);
174  double* GetCenter() VTK_SIZEHINT(3);
175  void GetCenter(double xyz[3]);
177 
179 
182  void SetNormal(double x, double y, double z);
183  void SetNormal(double x[3]);
184  double* GetNormal() VTK_SIZEHINT(3);
185  void GetNormal(double xyz[3]);
187 
189 
197  vtkSetClampMacro(Representation,int,VTK_PLANE_OFF,VTK_PLANE_SURFACE);
198  vtkGetMacro(Representation,int);
199  void SetRepresentationToOff()
200  {this->SetRepresentation(VTK_PLANE_OFF);}
202  {this->SetRepresentation(VTK_PLANE_OUTLINE);}
204  {this->SetRepresentation(VTK_PLANE_WIREFRAME);}
206  {this->SetRepresentation(VTK_PLANE_SURFACE);}
208 
210 
216  vtkSetMacro(NormalToXAxis,vtkTypeBool);
217  vtkGetMacro(NormalToXAxis,vtkTypeBool);
218  vtkBooleanMacro(NormalToXAxis,vtkTypeBool);
219  vtkSetMacro(NormalToYAxis,vtkTypeBool);
220  vtkGetMacro(NormalToYAxis,vtkTypeBool);
221  vtkBooleanMacro(NormalToYAxis,vtkTypeBool);
222  vtkSetMacro(NormalToZAxis,vtkTypeBool);
223  vtkGetMacro(NormalToZAxis,vtkTypeBool);
224  vtkBooleanMacro(NormalToZAxis,vtkTypeBool);
226 
236 
244  void GetPlane(vtkPlane *plane);
245 
253 
258  void UpdatePlacement(void) override;
259 
261 
266  vtkGetObjectMacro(HandleProperty,vtkProperty);
267  vtkGetObjectMacro(SelectedHandleProperty,vtkProperty);
269 
271 
276  vtkGetObjectMacro(PlaneProperty,vtkProperty);
277  vtkGetObjectMacro(SelectedPlaneProperty,vtkProperty);
279 
280 protected:
282  ~vtkPlaneWidget() override;
283 
284  // Manage the state of the widget
285  int State;
287  {
288  Start=0,
295  Pinching
296  };
297 
298  //handles the events
299  static void ProcessEvents(vtkObject* object,
300  unsigned long event,
301  void* clientdata,
302  void* calldata);
303 
304  // ProcessEvents() dispatches to these methods.
311  void OnMouseMove();
312  void OnStartPinch();
313  void OnPinch();
314  void OnEndPinch();
315 
316  // controlling ivars
322 
323  // the plane
328  void HighlightPlane(int highlight);
329 
330  // glyphs representing hot spots (e.g., handles)
335  void HandlesOn(double length);
336  void HandlesOff();
337  int HighlightHandle(vtkProp *prop); //returns cell id
338  void SizeHandles() override;
339 
340  // the normal cone
344  void HighlightNormal(int highlight);
345 
346  // the normal line
350 
351  // the normal cone
355 
356  // the normal line
360 
361  // Do the picking
365 
366  // Register internal Pickers within PickingManager
367  void RegisterPickers() override;
368 
369  // Methods to manipulate the hexahedron.
370  void MoveOrigin(double *p1, double *p2);
371  void MovePoint1(double *p1, double *p2);
372  void MovePoint2(double *p1, double *p2);
373  void MovePoint3(double *p1, double *p2);
374  void Rotate(int X, int Y, double *p1, double *p2, double *vpn);
375  void Spin(double *p1, double *p2);
376  void Scale(double *p1, double *p2, int X, int Y);
377  void Translate(double *p1, double *p2);
378  void Push(double *p1, double *p2);
379 
380  // Plane normal, normalized
381  double Normal[3];
382 
383  // Transform the hexahedral points (used for rotations)
385 
386  // Properties used to control the appearance of selected objects and
387  // the manipulator in general.
393 
395 
398 
399 private:
400  vtkPlaneWidget(const vtkPlaneWidget&) = delete;
401  void operator=(const vtkPlaneWidget&) = delete;
402 };
403 
404 #endif
vtkPolyDataMapper
map vtkPolyData to graphics primitives
Definition: vtkPolyDataMapper.h:43
vtkPoints
represent and manipulate 3D points
Definition: vtkPoints.h:40
vtkPlane
perform various plane computations
Definition: vtkPlane.h:38
vtkPlaneWidget::Scaling
@ Scaling
Definition: vtkPlaneWidget.h:290
vtkPlaneWidget::SelectRepresentation
void SelectRepresentation()
vtkPlaneWidget::OnEndPinch
void OnEndPinch()
vtkPlaneWidget::SetRepresentationToSurface
void SetRepresentationToSurface()
Definition: vtkPlaneWidget.h:205
vtkPlaneWidget::LineSource2
vtkLineSource * LineSource2
Definition: vtkPlaneWidget.h:359
vtkPlaneWidget::OnMiddleButtonUp
void OnMiddleButtonUp()
vtkPlaneWidget::ProcessEvents
static void ProcessEvents(vtkObject *object, unsigned long event, void *clientdata, void *calldata)
vtkPlaneWidget::RegisterPickers
void RegisterPickers() override
Register internal Pickers in the Picking Manager.
vtkPlaneWidget::HandlesOn
void HandlesOn(double length)
vtkPlaneWidget::CurrentHandle
vtkActor * CurrentHandle
Definition: vtkPlaneWidget.h:364
vtkPlaneWidget::ConeActor
vtkActor * ConeActor
Definition: vtkPlaneWidget.h:341
vtkPlaneWidget::Handle
vtkActor ** Handle
Definition: vtkPlaneWidget.h:331
vtkPlaneWidget::GetPolyData
void GetPolyData(vtkPolyData *pd)
Grab the polydata (including points) that defines the plane.
vtkPlaneWidget::WidgetState
WidgetState
Definition: vtkPlaneWidget.h:287
vtkPlaneSource
create an array of quadrilaterals located in a plane
Definition: vtkPlaneSource.h:61
vtkX3D::Normal
@ Normal
Definition: vtkX3D.h:45
vtkPlaneWidget::LineActor
vtkActor * LineActor
Definition: vtkPlaneWidget.h:347
vtkPlaneWidget::State
int State
Definition: vtkPlaneWidget.h:285
vtkPlaneWidget::Spin
void Spin(double *p1, double *p2)
vtkConeSource
generate polygonal cone
Definition: vtkConeSource.h:45
vtkObject
abstract base class for most VTK objects
Definition: vtkObject.h:60
vtkPlaneWidget::~vtkPlaneWidget
~vtkPlaneWidget() override
vtkPlaneWidget::SelectedHandleProperty
vtkProperty * SelectedHandleProperty
Definition: vtkPlaneWidget.h:389
vtkX3D::length
@ length
Definition: vtkX3D.h:393
vtkPlaneWidget::ConeSource2
vtkConeSource * ConeSource2
Definition: vtkPlaneWidget.h:354
vtkPlaneWidget::Pushing
@ Pushing
Definition: vtkPlaneWidget.h:291
vtkPlaneWidget::ConeSource
vtkConeSource * ConeSource
Definition: vtkPlaneWidget.h:343
vtkPlaneWidget::PlanePicker
vtkCellPicker * PlanePicker
Definition: vtkPlaneWidget.h:363
vtkPlaneWidget::NormalToXAxis
vtkTypeBool NormalToXAxis
Definition: vtkPlaneWidget.h:317
vtkPlaneWidget::GetPlane
void GetPlane(vtkPlane *plane)
Get the planes describing the implicit function defined by the plane widget.
vtkPlaneWidget::PlaneActor
vtkActor * PlaneActor
Definition: vtkPlaneWidget.h:324
vtkPlaneWidget::MovePoint1
void MovePoint1(double *p1, double *p2)
vtkTransform
describes linear transformations via a 4x4 matrix
Definition: vtkTransform.h:61
vtkPlaneWidget
3D widget for manipulating a finite plane
Definition: vtkPlaneWidget.h:107
vtkPlaneWidget::NormalToZAxis
vtkTypeBool NormalToZAxis
Definition: vtkPlaneWidget.h:319
vtkPlaneWidget::Rotate
void Rotate(int X, int Y, double *p1, double *p2, double *vpn)
vtkPlaneWidget::LineMapper2
vtkPolyDataMapper * LineMapper2
Definition: vtkPlaneWidget.h:358
vtkPlaneWidget::Spinning
@ Spinning
Definition: vtkPlaneWidget.h:293
vtkPlaneWidget::GeneratePlane
void GeneratePlane()
vtkPlaneWidget::HandleProperty
vtkProperty * HandleProperty
Definition: vtkPlaneWidget.h:388
vtkPlaneWidget::Scale
void Scale(double *p1, double *p2, int X, int Y)
vtkPlaneWidget::SetOrigin
void SetOrigin(double x, double y, double z)
Set/Get the origin of the plane.
VTK_SIZEHINT
#define VTK_SIZEHINT(...)
Definition: vtkWrappingHints.h:42
vtkPlaneWidget::GetPolyDataAlgorithm
vtkPolyDataAlgorithm * GetPolyDataAlgorithm() override
Satisfies superclass API.
vtkPlaneWidget::PlaneProperty
vtkProperty * PlaneProperty
Definition: vtkPlaneWidget.h:390
vtkPlaneWidget::SetRepresentationToOutline
void SetRepresentationToOutline()
Definition: vtkPlaneWidget.h:201
vtkPlaneWidget::UpdatePlacement
void UpdatePlacement(void) override
Satisfies superclass API.
vtkPlaneWidget::OnRightButtonUp
void OnRightButtonUp()
vtkSphereSource
create a polygonal sphere centered at the origin
Definition: vtkSphereSource.h:47
vtkPlaneWidget::SetEnabled
void SetEnabled(int) override
Methods that satisfy the superclass' API.
vtkPlaneWidget::LineMapper
vtkPolyDataMapper * LineMapper
Definition: vtkPlaneWidget.h:348
vtkPlaneWidget::PlaceWidget
void PlaceWidget() override
Definition: vtkPlaneWidget.h:123
vtkPlaneWidget::vtkPlaneWidget
vtkPlaneWidget()
vtkPlaneWidget::GetResolution
int GetResolution()
vtkActor
represents an object (geometry & properties) in a rendered scene
Definition: vtkActor.h:52
vtkPlaneWidget::MoveOrigin
void MoveOrigin(double *p1, double *p2)
vtkPlaneWidget::ConeActor2
vtkActor * ConeActor2
Definition: vtkPlaneWidget.h:352
vtkIndent
a simple class to control print indentation
Definition: vtkIndent.h:40
VTK_PLANE_WIREFRAME
#define VTK_PLANE_WIREFRAME
Definition: vtkPlaneWidget.h:103
vtkPlaneWidget::PlaneOutline
vtkPolyData * PlaneOutline
Definition: vtkPlaneWidget.h:327
vtkPlaneWidget::OnPinch
void OnPinch()
vtkPlaneWidget::LineActor2
vtkActor * LineActor2
Definition: vtkPlaneWidget.h:357
vtkPlaneWidget::LineSource
vtkLineSource * LineSource
Definition: vtkPlaneWidget.h:349
vtkPlaneWidget::GetOrigin
double * GetOrigin()
vtkPlaneWidget::LastPickValid
int LastPickValid
Definition: vtkPlaneWidget.h:396
vtkLineSource
create a line defined by two end points
Definition: vtkLineSource.h:43
vtkPlaneWidget::SetOrigin
void SetOrigin(double x[3])
vtkPlaneWidget::MovePoint3
void MovePoint3(double *p1, double *p2)
vtkPlaneWidget::SelectedPlaneProperty
vtkProperty * SelectedPlaneProperty
Definition: vtkPlaneWidget.h:391
vtkPlaneWidget::Representation
int Representation
Definition: vtkPlaneWidget.h:320
vtkProp
abstract superclass for all actors, volumes and annotations
Definition: vtkProp.h:53
vtkPlaneWidget::SetResolution
void SetResolution(int r)
Set/Get the resolution (number of subdivisions) of the plane.
vtkPlaneWidget::MovePoint2
void MovePoint2(double *p1, double *p2)
vtkPlaneWidget::HighlightNormal
void HighlightNormal(int highlight)
VTK_PLANE_SURFACE
#define VTK_PLANE_SURFACE
Definition: vtkPlaneWidget.h:104
vtkPlaneWidget::OnMouseMove
void OnMouseMove()
vtkPlaneWidget::HandlesOff
void HandlesOff()
vtkPlaneWidget::PlaceWidget
void PlaceWidget(double xmin, double xmax, double ymin, double ymax, double zmin, double zmax) override
Definition: vtkPlaneWidget.h:125
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:101
vtkPlaneWidget::ConeMapper
vtkPolyDataMapper * ConeMapper
Definition: vtkPlaneWidget.h:342
vtkPolyDataSourceWidget
abstract PolyDataSource-based 3D widget
Definition: vtkPolyDataSourceWidget.h:46
vtkPolyData
concrete dataset represents vertices, lines, polygons, and triangle strips
Definition: vtkPolyData.h:86
vtkPlaneWidget::OnRightButtonDown
void OnRightButtonDown()
vtkPlaneWidget::HandleGeometry
vtkSphereSource ** HandleGeometry
Definition: vtkPlaneWidget.h:333
vtkPlaneWidget::ConeMapper2
vtkPolyDataMapper * ConeMapper2
Definition: vtkPlaneWidget.h:353
vtkPlaneWidget::HandlePicker
vtkCellPicker * HandlePicker
Definition: vtkPlaneWidget.h:362
vtkPlaneWidget::OnMiddleButtonDown
void OnMiddleButtonDown()
vtkPlaneWidget::PlaceWidget
void PlaceWidget(double bounds[6]) override
We have to redeclare this abstract, PlaceWidget() requires it.
vtkPlaneWidget::Translate
void Translate(double *p1, double *p2)
vtkPlaneWidget::PlaneMapper
vtkPolyDataMapper * PlaneMapper
Definition: vtkPlaneWidget.h:325
vtkPlaneWidget::OnStartPinch
void OnStartPinch()
vtkPlaneWidget::PrintSelf
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
vtkPlaneWidget::SetRepresentationToWireframe
void SetRepresentationToWireframe()
Definition: vtkPlaneWidget.h:203
vtkProperty
represent surface properties of a geometric object
Definition: vtkProperty.h:67
vtkPlaneWidget::HighlightPlane
void HighlightPlane(int highlight)
vtkPlaneWidget::CreateDefaultProperties
void CreateDefaultProperties()
vtkPlaneWidget::SizeHandles
void SizeHandles() override
vtkPlaneWidget::Moving
@ Moving
Definition: vtkPlaneWidget.h:289
vtkPlaneWidget::PositionHandles
void PositionHandles()
vtkCellPicker
ray-cast cell picker for all kinds of Prop3Ds
Definition: vtkCellPicker.h:70
vtkPlaneWidget::HandleMapper
vtkPolyDataMapper ** HandleMapper
Definition: vtkPlaneWidget.h:332
vtkPlaneWidget::OnLeftButtonDown
void OnLeftButtonDown()
vtkPlaneWidget::New
static vtkPlaneWidget * New()
Instantiate the object.
vtkTypeBool
int vtkTypeBool
Definition: vtkABI.h:69
vtkPlaneWidget::SetPlaneProperty
virtual void SetPlaneProperty(vtkProperty *)
Get the plane properties.
vtkPlaneWidget::Transform
vtkTransform * Transform
Definition: vtkPlaneWidget.h:384
vtkPlaneWidget::PlaneSource
vtkPlaneSource * PlaneSource
Definition: vtkPlaneWidget.h:326
vtkPlaneWidget::Outside
@ Outside
Definition: vtkPlaneWidget.h:294
vtkPlaneWidget::Rotating
@ Rotating
Definition: vtkPlaneWidget.h:292
vtkPlaneWidget::HandleSizeFactor
double HandleSizeFactor
Definition: vtkPlaneWidget.h:397
vtkPlaneWidget::HighlightHandle
int HighlightHandle(vtkProp *prop)
vtkPolyDataSourceWidget.h
VTK_PLANE_OUTLINE
#define VTK_PLANE_OUTLINE
Definition: vtkPlaneWidget.h:102
vtkPlaneWidget::NormalToYAxis
vtkTypeBool NormalToYAxis
Definition: vtkPlaneWidget.h:318
vtkPolyDataAlgorithm
Superclass for algorithms that produce only polydata as output.
Definition: vtkPolyDataAlgorithm.h:45