VTK
vtkFinitePlaneRepresentation.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkFinitePlaneRepresentation.h
5 
6  Copyright (c)
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 =========================================================================*/
34 #ifndef vtkFinitePlaneRepresentation_h
35 #define vtkFinitePlaneRepresentation_h
36 
37 #include "vtkInteractionWidgetsModule.h" // For export macro
39 
40 class vtkActor;
41 class vtkBox;
42 class vtkCellPicker;
43 class vtkConeSource;
44 class vtkFeatureEdges;
45 class vtkLineSource;
46 class vtkPolyData;
47 class vtkPolyDataMapper;
48 class vtkProperty;
49 class vtkSphereSource;
50 class vtkTransform;
51 class vtkTubeFilter;
52 
53 class VTKINTERACTIONWIDGETS_EXPORT vtkFinitePlaneRepresentation : public vtkWidgetRepresentation
54 {
55 public:
60 
62 
66  void PrintSelf(ostream& os, vtkIndent indent);
68 
74 
76 
81  vtkGetObjectMacro(V1HandleProperty, vtkProperty);
82  vtkGetObjectMacro(V2HandleProperty, vtkProperty);
83  vtkGetObjectMacro(SelectedHandleProperty, vtkProperty);
85 
87 
92  vtkGetObjectMacro(PlaneProperty, vtkProperty);
93  vtkGetObjectMacro(SelectedPlaneProperty, vtkProperty);
95 
97 
101  vtkSetMacro(Tubing, bool);
102  vtkGetMacro(Tubing, bool);
103  vtkBooleanMacro(Tubing, bool);
105 
107 
113  void SetDrawPlane(bool plane);
114  vtkGetMacro(DrawPlane, bool);
115  vtkBooleanMacro(DrawPlane, bool);
117 
119 
123  void SetHandles(bool handles);
124  virtual void HandlesOn();
125  virtual void HandlesOff();
127 
129 
132  virtual void PlaceWidget(double bounds[6]);
133  virtual void BuildRepresentation();
134  virtual int ComputeInteractionState(int X, int Y, int modify=0);
135  virtual void StartWidgetInteraction(double e[2]);
136  virtual void WidgetInteraction(double e[2]);
137  virtual double *GetBounds();
139 
141 
149 
150  vtkSetClampMacro(InteractionState, int, Outside, Pushing);
151 
153 
156  void SetOrigin(double x, double y, double z);
157  void SetOrigin(double x[3]);
158  vtkGetVector3Macro(Origin, double);
160 
162 
165  void SetNormal(double x, double y, double z);
166  void SetNormal(double x[3]);
167  vtkGetVector3Macro(Normal, double);
169 
171 
174  void SetV1(double x, double y);
175  void SetV1(double x[2]);
176  vtkGetVector2Macro(V1, double);
178 
180 
183  void SetV2(double x, double y);
184  void SetV2(double x[2]);
185  vtkGetVector2Macro(V2, double);
187 
189 
193  virtual void SetRepresentationState(int);
194  vtkGetMacro(RepresentationState, int);
196 
198 
201  vtkGetObjectMacro(NormalProperty, vtkProperty);
202  vtkGetObjectMacro(SelectedNormalProperty, vtkProperty);
204 
205  // Methods to manipulate the plane
206  void TranslateOrigin(double *p1, double *p2);
207  void MovePoint1(double *p1, double *p2);
208  void MovePoint2(double *p1, double *p2);
209  void Push(double *p1, double *p2);
210  void Rotate(int X, int Y, double *p1, double *p2, double *vpn);
211 
213  {
214  Outside = 0,
220  Pushing
221  };
222 
223 protected:
226 
227  virtual void CreateDefaultProperties();
228 
229  // Size the glyphs representing hot spots (e.g., handles)
230  virtual void SizeHandles();
231 
232  // Register internal Pickers within PickingManager
233  virtual void RegisterPickers();
234 
235  void SetHighlightNormal(int highlight);
236  void SetHighlightPlane(int highlight);
238 
239  double LastEventPosition[3];
240 
241  // the representation state
243 
244  // the origin
248  double Origin[3];
249 
250  // the normal
251  double Normal[3];
252 
253  // the previous normal
254  double PreviousNormal[3];
255 
256  // the rotation transform
258 
259  // the X Vector
263  double V1[3];
264 
265  // the Y Vector
269  double V2[3];
270 
271  // The + normal cone
275 
276  // The + normal line
280 
281  // The - normal cone
285 
286  // The - normal line
290 
291  // The finite plane
295 
296  // Optional tubes are represented by extracting boundary edges
301  bool Tubing; //control whether tubing is on
302  bool DrawPlane; //control whether plane is on
303 
304  // Picking objects
307 
308  // Transform the planes (used for rotations)
310 
311  // Support GetBounds() method
313 
314  // Properties used to control the appearance of selected objects and
315  // the manipulator in general.
324 
325 private:
327  void operator=(const vtkFinitePlaneRepresentation&) VTK_DELETE_FUNCTION;
328 };
329 
330 #endif
represents an object (geometry & properties) in a rendered scene
Definition: vtkActor.h:52
implicit function for a bounding box
Definition: vtkBox.h:42
ray-cast cell picker for all kinds of Prop3Ds
Definition: vtkCellPicker.h:70
generate polygonal cone
Definition: vtkConeSource.h:45
extract boundary, non-manifold, and/or sharp edges from polygonal data
represent the vtkFinitePlaneWidget.
void Rotate(int X, int Y, double *p1, double *p2, double *vpn)
void SetHighlightNormal(int highlight)
virtual void StartWidgetInteraction(double e[2])
void PrintSelf(ostream &os, vtkIndent indent)
Methods invoked by print to print information about the object including superclasses.
void SetDrawPlane(bool plane)
Enable/disable the drawing of the plane.
virtual int ComputeInteractionState(int X, int Y, int modify=0)
virtual void CreateDefaultProperties()
void SetHighlightHandle(vtkProp *prop)
void SetOrigin(double x, double y, double z)
Set/Get the origin of the plane.
virtual void RegisterPickers()
Register internal Pickers in the Picking Manager.
virtual int RenderOpaqueGeometry(vtkViewport *)
WARNING: INTERNAL METHOD - NOT INTENDED FOR GENERAL USE DO NOT USE THESE METHODS OUTSIDE OF THE RENDE...
virtual void SetRepresentationState(int)
Sets the visual appearance of the representation based on the state it is in.
void SetNormal(double x, double y, double z)
Set/Get the normal to the plane.
void SetHighlightPlane(int highlight)
virtual double * GetBounds()
Methods to make this class behave as a vtkProp.
virtual void WidgetInteraction(double e[2])
void SetHandles(bool handles)
Switches handles (the spheres) on or off by manipulating the underlying actor visibility.
virtual int HasTranslucentPolygonalGeometry()
WARNING: INTERNAL METHOD - NOT INTENDED FOR GENERAL USE DO NOT USE THESE METHODS OUTSIDE OF THE RENDE...
void SetOrigin(double x[3])
virtual void ReleaseGraphicsResources(vtkWindow *)
Methods supporting, and required by, the rendering process.
void GetPolyData(vtkPolyData *pd)
Grab the polydata that defines the plane.
void SetV1(double x, double y)
Set/Get the v1 vector of the plane.
static vtkFinitePlaneRepresentation * New()
Instantiate the class.
virtual int RenderTranslucentPolygonalGeometry(vtkViewport *)
virtual void BuildRepresentation()
void TranslateOrigin(double *p1, double *p2)
void MovePoint1(double *p1, double *p2)
void SetNormal(double x[3])
void SetV2(double x, double y)
Set/Get the v2 vector of the plane.
virtual void PlaceWidget(double bounds[6])
These are methods that satisfy vtkWidgetRepresentation's API.
void MovePoint2(double *p1, double *p2)
void Push(double *p1, double *p2)
a simple class to control print indentation
Definition: vtkIndent.h:40
create a line defined by two end points
Definition: vtkLineSource.h:43
map vtkPolyData to graphics primitives
concrete dataset represents vertices, lines, polygons, and triangle strips
Definition: vtkPolyData.h:86
abstract superclass for all actors, volumes and annotations
Definition: vtkProp.h:48
represent surface properties of a geometric object
Definition: vtkProperty.h:65
create a polygonal sphere centered at the origin
describes linear transformations via a 4x4 matrix
Definition: vtkTransform.h:61
filter that generates tubes around lines
Definition: vtkTubeFilter.h:84
abstract specification for Viewports
Definition: vtkViewport.h:48
abstract class defines interface between the widget and widget representation classes
window superclass for vtkRenderWindow
Definition: vtkWindow.h:35
@ Normal
Definition: vtkX3D.h:45
vtkSetMacro(IgnoreDriverBugs, bool)
Updates the extensions string.
vtkBooleanMacro(IgnoreDriverBugs, bool)
Updates the extensions string.