VTK  9.2.6
vtkSphereRepresentation.h
Go to the documentation of this file.
1/*=========================================================================
2
3 Program: Visualization Toolkit
4 Module: vtkSphereRepresentation.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 vtkSphereRepresentation_h
47#define vtkSphereRepresentation_h
48
49#include "vtkInteractionWidgetsModule.h" // For export macro
50#include "vtkSphereSource.h" // Needed for fast access to the sphere source
52
53class vtkActor;
55class vtkSphere;
56class vtkSphereSource;
57class vtkCellPicker;
58class vtkProperty;
59class vtkPolyData;
60class vtkPoints;
62class vtkTransform;
63class vtkDoubleArray;
64class vtkMatrix4x4;
65class vtkTextMapper;
66class vtkActor2D;
67class vtkTextProperty;
68class vtkLineSource;
69class vtkCursor3D;
70
71#define VTK_SPHERE_OFF 0
72#define VTK_SPHERE_WIREFRAME 1
73#define VTK_SPHERE_SURFACE 2
74
75class VTKINTERACTIONWIDGETS_EXPORT vtkSphereRepresentation : public vtkWidgetRepresentation
76{
77public:
82
84
88 void PrintSelf(ostream& os, vtkIndent indent) override;
90
91 // Used to manage the state of the widget
92 enum
93 {
94 Outside = 0,
98 Scaling
99 };
100
102
106 vtkSetClampMacro(Representation, int, VTK_SPHERE_OFF, VTK_SPHERE_SURFACE);
107 vtkGetMacro(Representation, int);
108 void SetRepresentationToOff() { this->SetRepresentation(VTK_SPHERE_OFF); }
109 void SetRepresentationToWireframe() { this->SetRepresentation(VTK_SPHERE_WIREFRAME); }
110 void SetRepresentationToSurface() { this->SetRepresentation(VTK_SPHERE_SURFACE); }
112
116 void SetThetaResolution(int r) { this->SphereSource->SetThetaResolution(r); }
117 int GetThetaResolution() { return this->SphereSource->GetThetaResolution(); }
118
122 void SetPhiResolution(int r) { this->SphereSource->SetPhiResolution(r); }
123 int GetPhiResolution() { return this->SphereSource->GetPhiResolution(); }
124
130 void SetCenter(double c[3]);
131 void SetCenter(double x, double y, double z)
132 {
133 double c[3];
134 c[0] = x;
135 c[1] = y;
136 c[2] = z;
137 this->SetCenter(c);
138 }
139 double* GetCenter() VTK_SIZEHINT(3) { return this->SphereSource->GetCenter(); }
140 void GetCenter(double xyz[3]) { this->SphereSource->GetCenter(xyz); }
141
146 void SetRadius(double r);
147 double GetRadius() { return this->SphereSource->GetRadius(); }
148
150
156 vtkSetMacro(HandleVisibility, vtkTypeBool);
157 vtkGetMacro(HandleVisibility, vtkTypeBool);
158 vtkBooleanMacro(HandleVisibility, vtkTypeBool);
160
162
166 void SetHandlePosition(double handle[3]);
167 void SetHandlePosition(double x, double y, double z)
168 {
169 double p[3];
170 p[0] = x;
171 p[1] = y;
172 p[2] = z;
173 this->SetHandlePosition(p);
174 }
175 vtkGetVector3Macro(HandlePosition, double);
177
179
184 void SetHandleDirection(double dir[3]);
185 void SetHandleDirection(double dx, double dy, double dz)
186 {
187 double d[3];
188 d[0] = dx;
189 d[1] = dy;
190 d[2] = dz;
191 this->SetHandleDirection(d);
192 }
193 vtkGetVector3Macro(HandleDirection, double);
195
197
204 vtkSetMacro(HandleText, vtkTypeBool);
205 vtkGetMacro(HandleText, vtkTypeBool);
206 vtkBooleanMacro(HandleText, vtkTypeBool);
208
210
214 vtkSetMacro(RadialLine, vtkTypeBool);
215 vtkGetMacro(RadialLine, vtkTypeBool);
216 vtkBooleanMacro(RadialLine, vtkTypeBool);
218
220
224 vtkSetMacro(CenterCursor, bool);
225 vtkGetMacro(CenterCursor, bool);
226 vtkBooleanMacro(CenterCursor, bool);
228
237
244 void GetSphere(vtkSphere* sphere);
245
247
251 vtkGetObjectMacro(SphereProperty, vtkProperty);
252 vtkGetObjectMacro(SelectedSphereProperty, vtkProperty);
254
256
261 vtkGetObjectMacro(HandleProperty, vtkProperty);
262 vtkGetObjectMacro(SelectedHandleProperty, vtkProperty);
264
266
270 vtkGetObjectMacro(HandleTextProperty, vtkTextProperty);
272
274
278 vtkGetObjectMacro(RadialLineProperty, vtkProperty);
280
290 void SetInteractionState(int state);
291
293
298 void PlaceWidget(double bounds[6]) override;
299 virtual void PlaceWidget(double center[3], double handlePosition[3]);
300 void BuildRepresentation() override;
301 int ComputeInteractionState(int X, int Y, int modify = 0) override;
302 void StartWidgetInteraction(double e[2]) override;
303 void WidgetInteraction(double e[2]) override;
304 double* GetBounds() override;
306
308
317
318 /*
319 * Register internal Pickers within PickingManager
320 */
321 void RegisterPickers() override;
322
324
328 vtkGetMacro(TranslationAxis, int);
329 vtkSetClampMacro(TranslationAxis, int, -1, 2);
331
333
336 void SetXTranslationAxisOn() { this->TranslationAxis = Axis::XAxis; }
337 void SetYTranslationAxisOn() { this->TranslationAxis = Axis::YAxis; }
338 void SetZTranslationAxisOn() { this->TranslationAxis = Axis::ZAxis; }
339 void SetTranslationAxisOff() { this->TranslationAxis = Axis::NONE; }
341
343
346 bool IsTranslationConstrained() { return this->TranslationAxis != Axis::NONE; }
348
349protected:
352
353 // Manage how the representation appears
354 double LastEventPosition[3];
355
357
358 // the sphere
362 void HighlightSphere(int highlight);
363
364 // The representation of the sphere
366
367 // Do the picking
370 double LastPickPosition[3];
371
372 // Methods to manipulate the sphere widget
373 void Translate(const double* p1, const double* p2);
374 void Scale(const double* p1, const double* p2, int X, int Y);
375 void PlaceHandle(const double* center, double radius);
376 virtual void SizeHandles();
377
378 // Method to adapt the center cursor bounds
379 // so it always have the same pixel size on screen
381
382 // Properties used to control the appearance of selected objects and
383 // the manipulator in general.
389
390 // Managing the handle
396 double HandleDirection[3];
397 double HandlePosition[3];
398
399 // Manage the handle label
404
405 // Manage the radial line segment
411
412 // Managing the center cursor
417
418private:
420 void operator=(const vtkSphereRepresentation&) = delete;
421};
422
423#endif
a actor that draws 2D data
Definition vtkActor2D.h:40
represents an object (geometry & properties) in a rendered scene
Definition vtkActor.h:46
ray-cast cell picker for all kinds of Prop3Ds
generate a 3D cursor representation
Definition vtkCursor3D.h:37
dynamic, self-adjusting array of double
a simple class to control print indentation
Definition vtkIndent.h:34
create a line defined by two end points
represent and manipulate 4x4 transformation matrices
represent and manipulate 3D points
Definition vtkPoints.h:34
Superclass for algorithms that produce only polydata as output.
map vtkPolyData to graphics primitives
concrete dataset represents vertices, lines, polygons, and triangle strips
Definition vtkPolyData.h:85
represent surface properties of a geometric object
Definition vtkProperty.h:62
a class defining the representation for the vtkSphereWidget2
void SetHandleDirection(double dx, double dy, double dz)
Set/Get the direction vector of the handle relative to the center of the sphere.
void SetPhiResolution(int r)
Set/Get the resolution of the sphere in the phi direction.
void SetRepresentationToWireframe()
Set the representation (i.e., appearance) of the sphere.
void BuildRepresentation() override
These are methods that satisfy vtkWidgetRepresentation's API.
void GetPolyData(vtkPolyData *pd)
Grab the polydata (including points) that defines the sphere.
void SetXTranslationAxisOn()
Toggles constraint translation axis on/off.
void PrintSelf(ostream &os, vtkIndent indent) override
Standard methods for type information and to print out the contents of the class.
void SetHandleDirection(double dir[3])
Set/Get the direction vector of the handle relative to the center of the sphere.
bool IsTranslationConstrained()
Returns true if ContrainedAxis.
void SetZTranslationAxisOn()
Toggles constraint translation axis on/off.
void SetCenter(double x, double y, double z)
int ComputeInteractionState(int X, int Y, int modify=0) override
These are methods that satisfy vtkWidgetRepresentation's API.
static vtkSphereRepresentation * New()
Instantiate the class.
double * GetBounds() override
These are methods that satisfy vtkWidgetRepresentation's API.
void SetTranslationAxisOff()
Toggles constraint translation axis on/off.
void SetRepresentationToOff()
Set the representation (i.e., appearance) of the sphere.
virtual void PlaceWidget(double center[3], double handlePosition[3])
These are methods that satisfy vtkWidgetRepresentation's API.
void SetCenter(double c[3])
Set/Get the center position of the sphere.
void PlaceHandle(const double *center, double radius)
vtkPolyDataMapper * RadialLineMapper
int RenderOpaqueGeometry(vtkViewport *) override
Methods supporting, and required by, the rendering process.
void SetThetaResolution(int r)
Set/Get the resolution of the sphere in the theta direction.
void SetInteractionState(int state)
The interaction state may be set from a widget (e.g., vtkSphereWidget2) or other object.
void GetSphere(vtkSphere *sphere)
Get the spherical implicit function defined by this widget.
void HighlightSphere(int highlight)
void SetRadius(double r)
Set/Get the radius of sphere.
void PlaceWidget(double bounds[6]) override
These are methods that satisfy vtkWidgetRepresentation's API.
int RenderTranslucentPolygonalGeometry(vtkViewport *) override
Methods supporting, and required by, the rendering process.
void SetYTranslationAxisOn()
Toggles constraint translation axis on/off.
void WidgetInteraction(double e[2]) override
These are methods that satisfy vtkWidgetRepresentation's API.
~vtkSphereRepresentation() override
void SetHandlePosition(double x, double y, double z)
Set/Get the position of the handle.
void RegisterPickers() override
Register internal Pickers in the Picking Manager.
int RenderOverlay(vtkViewport *) override
Methods supporting, and required by, the rendering process.
void SetRepresentationToSurface()
Set the representation (i.e., appearance) of the sphere.
void SetHandlePosition(double handle[3])
Set/Get the position of the handle.
virtual void SizeHandles()
void ReleaseGraphicsResources(vtkWindow *) override
Methods supporting, and required by, the rendering process.
void Scale(const double *p1, const double *p2, int X, int Y)
void StartWidgetInteraction(double e[2]) override
These are methods that satisfy vtkWidgetRepresentation's API.
virtual void AdaptCenterCursorBounds()
vtkTypeBool HasTranslucentPolygonalGeometry() override
Methods supporting, and required by, the rendering process.
void Translate(const double *p1, const double *p2)
create a polygonal sphere centered at the origin
implicit function for a sphere
Definition vtkSphere.h:32
2D text annotation
represent text properties.
describes linear transformations via a 4x4 matrix
abstract specification for Viewports
Definition vtkViewport.h:50
abstract class defines interface between the widget and widget representation classes
window superclass for vtkRenderWindow
Definition vtkWindow.h:39
int vtkTypeBool
Definition vtkABI.h:69
#define VTK_SPHERE_SURFACE
#define VTK_SPHERE_OFF
#define VTK_SPHERE_WIREFRAME
#define VTK_SIZEHINT(...)