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
40class vtkActor;
41class vtkBox;
42class vtkCellPicker;
43class vtkConeSource;
44class vtkFeatureEdges;
45class vtkLineSource;
46class vtkPolyData;
48class vtkProperty;
49class vtkSphereSource;
50class vtkTransform;
51class vtkTubeFilter;
52
53class VTKINTERACTIONWIDGETS_EXPORT vtkFinitePlaneRepresentation : public vtkWidgetRepresentation
54{
55public:
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
223protected:
226
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
325private:
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 double * GetBounds()
Methods to make this class behave as a vtkProp.
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.
static vtkFinitePlaneRepresentation * New()
Instantiate the class.
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 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.
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.