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=========================================================================*/
48
49#ifndef vtkSphereRepresentation_h
50#define vtkSphereRepresentation_h
51
52#include "vtkInteractionWidgetsModule.h" // For export macro
53#include "vtkSphereSource.h" // Needed for fast access to the sphere source
55
56class vtkActor;
58class vtkSphere;
59class vtkSphereSource;
60class vtkCellPicker;
61class vtkProperty;
62class vtkPolyData;
63class vtkPoints;
65class vtkTransform;
66class vtkDoubleArray;
67class vtkMatrix4x4;
68class vtkTextMapper;
69class vtkActor2D;
70class vtkTextProperty;
71class vtkLineSource;
72class vtkCursor3D;
73
74#define VTK_SPHERE_OFF 0
75#define VTK_SPHERE_WIREFRAME 1
76#define VTK_SPHERE_SURFACE 2
77
78class VTKINTERACTIONWIDGETS_EXPORT vtkSphereRepresentation : public vtkWidgetRepresentation
79{
80public:
85
87
91 void PrintSelf(ostream& os, vtkIndent indent) override;
93
94 // Used to manage the state of the widget
95 enum
96 {
102 };
103
105
110 vtkGetMacro(Representation, int);
115
119 void SetThetaResolution(int r) { this->SphereSource->SetThetaResolution(r); }
120 int GetThetaResolution() { return this->SphereSource->GetThetaResolution(); }
121
125 void SetPhiResolution(int r) { this->SphereSource->SetPhiResolution(r); }
126 int GetPhiResolution() { return this->SphereSource->GetPhiResolution(); }
127
133 void SetCenter(double c[3]);
134 void SetCenter(double x, double y, double z)
135 {
136 double c[3];
137 c[0] = x;
138 c[1] = y;
139 c[2] = z;
140 this->SetCenter(c);
141 }
142 double* GetCenter() VTK_SIZEHINT(3) { return this->SphereSource->GetCenter(); }
143 void GetCenter(double xyz[3]) { this->SphereSource->GetCenter(xyz); }
144
149 void SetRadius(double r);
150 double GetRadius() { return this->SphereSource->GetRadius(); }
151
153
161 vtkBooleanMacro(HandleVisibility, vtkTypeBool);
163
165
169 void SetHandlePosition(double handle[3]);
170 void SetHandlePosition(double x, double y, double z)
171 {
172 double p[3];
173 p[0] = x;
174 p[1] = y;
175 p[2] = z;
176 this->SetHandlePosition(p);
177 }
178 vtkGetVector3Macro(HandlePosition, double);
180
182
187 void SetHandleDirection(double dir[3]);
188 void SetHandleDirection(double dx, double dy, double dz)
189 {
190 double d[3];
191 d[0] = dx;
192 d[1] = dy;
193 d[2] = dz;
194 this->SetHandleDirection(d);
195 }
196 vtkGetVector3Macro(HandleDirection, double);
198
200
207 vtkSetMacro(HandleText, vtkTypeBool);
208 vtkGetMacro(HandleText, vtkTypeBool);
209 vtkBooleanMacro(HandleText, vtkTypeBool);
211
213
217 vtkSetMacro(RadialLine, vtkTypeBool);
218 vtkGetMacro(RadialLine, vtkTypeBool);
219 vtkBooleanMacro(RadialLine, vtkTypeBool);
221
223
227 vtkSetMacro(CenterCursor, bool);
228 vtkGetMacro(CenterCursor, bool);
229 vtkBooleanMacro(CenterCursor, bool);
231
240
247 void GetSphere(vtkSphere* sphere);
248
250
254 vtkGetObjectMacro(SphereProperty, vtkProperty);
257
259
264 vtkGetObjectMacro(HandleProperty, vtkProperty);
267
269
275
277
281 vtkGetObjectMacro(RadialLineProperty, vtkProperty);
283
293 void SetInteractionState(int state);
294
296
301 void PlaceWidget(double bounds[6]) override;
302 virtual void PlaceWidget(double center[3], double handlePosition[3]);
303 void BuildRepresentation() override;
304 int ComputeInteractionState(int X, int Y, int modify = 0) override;
305 void StartWidgetInteraction(double e[2]) override;
306 void WidgetInteraction(double e[2]) override;
307 double* GetBounds() override;
309
311
320
321 /*
322 * Register internal Pickers within PickingManager
323 */
324 void RegisterPickers() override;
325
327
331 vtkGetMacro(TranslationAxis, int);
332 vtkSetClampMacro(TranslationAxis, int, -1, 2);
334
336
344
346
351
352protected:
355
356 // Manage how the representation appears
358
360
361 // the sphere
365 void HighlightSphere(int highlight);
366
367 // The representation of the sphere
369
370 // Do the picking
374
375 // Methods to manipulate the sphere widget
376 void Translate(const double* p1, const double* p2);
377 void Scale(const double* p1, const double* p2, int X, int Y);
378 void PlaceHandle(const double* center, double radius);
379 virtual void SizeHandles();
380
381 // Method to adapt the center cursor bounds
382 // so it always have the same pixel size on screen
384
385 // Properties used to control the appearance of selected objects and
386 // the manipulator in general.
392
393 // Managing the handle
400 double HandlePosition[3];
401
402 // Manage the handle label
407
408 // Manage the radial line segment
414
415 // Managing the center cursor
420
421private:
423 void operator=(const vtkSphereRepresentation&) = delete;
424};
425
426#endif
a actor that draws 2D data
Definition vtkActor2D.h:46
represents an object (geometry & properties) in a rendered scene
Definition vtkActor.h:52
ray-cast cell picker for all kinds of Prop3Ds
generate a 3D cursor representation
Definition vtkCursor3D.h:40
dynamic, self-adjusting array of double
a simple class to control print indentation
Definition vtkIndent.h:40
create a line defined by two end points
represent and manipulate 4x4 transformation matrices
represent and manipulate 3D points
Definition vtkPoints.h:40
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:91
represent surface properties of a geometric object
Definition vtkProperty.h:68
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.
virtual void SetRepresentation(int)
Set the representation (i.e., appearance) of the sphere.
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:35
2D text annotation
represent text properties.
describes linear transformations via a 4x4 matrix
abstract specification for Viewports
Definition vtkViewport.h:56
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(...)