VTK  9.2.6
vtkSphereWidget.h
Go to the documentation of this file.
1/*=========================================================================
2
3 Program: Visualization Toolkit
4 Module: vtkSphereWidget.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=========================================================================*/
55
56#ifndef vtkSphereWidget_h
57#define vtkSphereWidget_h
58
59#include "vtk3DWidget.h"
60#include "vtkInteractionWidgetsModule.h" // For export macro
61#include "vtkSphereSource.h" // Needed for faster access to the sphere source
62
63class vtkActor;
65class vtkPoints;
66class vtkPolyData;
67class vtkSphereSource;
68class vtkSphere;
69class vtkCellPicker;
70class vtkProperty;
71
72#define VTK_SPHERE_OFF 0
73#define VTK_SPHERE_WIREFRAME 1
74#define VTK_SPHERE_SURFACE 2
75
76class VTKINTERACTIONWIDGETS_EXPORT vtkSphereWidget : public vtk3DWidget
77{
78public:
83
85 void PrintSelf(ostream& os, vtkIndent indent) override;
86
88
91 void SetEnabled(int) override;
92 void PlaceWidget(double bounds[6]) override;
93 void PlaceWidget() override { this->Superclass::PlaceWidget(); }
95 double xmin, double xmax, double ymin, double ymax, double zmin, double zmax) override
96 {
97 this->Superclass::PlaceWidget(xmin, xmax, ymin, ymax, zmin, zmax);
98 }
99
100
102
108 vtkGetMacro(Representation, int);
113
118 void SetThetaResolution(int r) { this->SphereSource->SetThetaResolution(r); }
119 int GetThetaResolution() { return this->SphereSource->GetThetaResolution(); }
120
125 void SetPhiResolution(int r) { this->SphereSource->SetPhiResolution(r); }
126 int GetPhiResolution() { return this->SphereSource->GetPhiResolution(); }
127
129
132 void SetRadius(double r)
133 {
134 if (r <= 0)
135 {
136 r = .00001;
137 }
138 this->SphereSource->SetRadius(r);
139 }
140 double GetRadius() { return this->SphereSource->GetRadius(); }
142
144
147 void SetCenter(double x, double y, double z) { this->SphereSource->SetCenter(x, y, z); }
148 void SetCenter(double x[3]) { this->SetCenter(x[0], x[1], x[2]); }
149 double* GetCenter() VTK_SIZEHINT(3) { return this->SphereSource->GetCenter(); }
150 void GetCenter(double xyz[3]) { this->SphereSource->GetCenter(xyz); }
152
154
160 vtkBooleanMacro(Translation, vtkTypeBool);
161 vtkSetMacro(Scale, vtkTypeBool);
162 vtkGetMacro(Scale, vtkTypeBool);
163 vtkBooleanMacro(Scale, vtkTypeBool);
165
167
175 vtkBooleanMacro(HandleVisibility, vtkTypeBool);
177
179
184 vtkSetVector3Macro(HandleDirection, double);
185 vtkGetVector3Macro(HandleDirection, double);
187
189
192 vtkGetVector3Macro(HandlePosition, double);
194
203
210 void GetSphere(vtkSphere* sphere);
211
213
217 vtkGetObjectMacro(SphereProperty, vtkProperty);
220
222
227 vtkGetObjectMacro(HandleProperty, vtkProperty);
230
231protected:
234
235 // Manage the state of the widget
236 int State;
245
246 // handles the events
247 static void ProcessEvents(
248 vtkObject* object, unsigned long event, void* clientdata, void* calldata);
249
250 // ProcessEvents() dispatches to these methods.
256
257 // the sphere
261 void HighlightSphere(int highlight);
263
264 // The representation of the sphere
266
267 // Do the picking
269
270 // Register internal Pickers within PickingManager
271 void RegisterPickers() override;
272
273 // Methods to manipulate the sphere widget
276 void Translate(double* p1, double* p2);
277 void ScaleSphere(double* p1, double* p2, int X, int Y);
278 void MoveHandle(double* p1, double* p2, int X, int Y);
279 void PlaceHandle(double* center, double radius);
280
281 // Properties used to control the appearance of selected objects and
282 // the manipulator in general.
288
289 // Managing the handle
296 double HandlePosition[3];
297 void SizeHandles() override;
298
299private:
300 vtkSphereWidget(const vtkSphereWidget&) = delete;
301 void operator=(const vtkSphereWidget&) = delete;
302};
303
304#endif
virtual void PlaceWidget(double bounds[6])=0
This method is used to initially place the widget.
represents an object (geometry & properties) in a rendered scene
Definition vtkActor.h:46
ray-cast cell picker for all kinds of Prop3Ds
a simple class to control print indentation
Definition vtkIndent.h:34
represent and manipulate 3D points
Definition vtkPoints.h:34
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
create a polygonal sphere centered at the origin
double * GetCenter()
Set/Get the center of the sphere.
double HandlePosition[3]
vtkCellPicker * Picker
double HandleDirection[3]
void GetCenter(double xyz[3])
Set/Get the center of the sphere.
~vtkSphereWidget() override
void OnRightButtonUp()
vtkProperty * SelectedSphereProperty
void PlaceWidget(double xmin, double xmax, double ymin, double ymax, double zmin, double zmax) override
Methods that satisfy the superclass' API.
void SizeHandles() override
static void ProcessEvents(vtkObject *object, unsigned long event, void *clientdata, void *calldata)
void SelectRepresentation()
vtkPolyDataMapper * HandleMapper
void SetCenter(double x[3])
Set/Get the center of the sphere.
double GetRadius()
Set/Get the radius of sphere.
void HighlightHandle(int)
void SetCenter(double x, double y, double z)
Set/Get the center of the sphere.
void CreateDefaultProperties()
void SetEnabled(int) override
Methods that satisfy the superclass' API.
void GetPolyData(vtkPolyData *pd)
Grab the polydata (including points) that defines the sphere.
void SetRadius(double r)
Set/Get the radius of sphere.
vtkSphereSource * HandleSource
void PlaceWidget(double bounds[6]) override
Methods that satisfy the superclass' API.
vtkTypeBool HandleVisibility
static vtkSphereWidget * New()
Instantiate the object.
void SetThetaResolution(int r)
Set/Get the resolution of the sphere in the Theta direction.
void RegisterPickers() override
Register internal Pickers in the Picking Manager.
virtual void SetRepresentation(int)
Set the representation of the sphere.
void OnLeftButtonUp()
vtkPolyDataMapper * SphereMapper
vtkProperty * SphereProperty
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
void OnLeftButtonDown()
void Translate(double *p1, double *p2)
vtkActor * HandleActor
void HighlightSphere(int highlight)
void MoveHandle(double *p1, double *p2, int X, int Y)
vtkTypeBool Translation
void SetRepresentationToSurface()
Set the representation of the sphere.
void SetPhiResolution(int r)
Set/Get the resolution of the sphere in the Phi direction.
vtkProperty * HandleProperty
void GetSphere(vtkSphere *sphere)
Get the spherical implicit function defined by this widget.
vtkActor * SphereActor
void SetRepresentationToWireframe()
Set the representation of the sphere.
vtkSphereSource * SphereSource
void SetRepresentationToOff()
Set the representation of the sphere.
void OnRightButtonDown()
void PlaceWidget() override
Methods that satisfy the superclass' API.
void ScaleSphere(double *p1, double *p2, int X, int Y)
vtkProperty * SelectedHandleProperty
void PlaceHandle(double *center, double radius)
implicit function for a sphere
Definition vtkSphere.h:32
int vtkTypeBool
Definition vtkABI.h:69
#define VTK_SPHERE_SURFACE
#define VTK_SPHERE_OFF
#define VTK_SPHERE_WIREFRAME
#define VTK_SIZEHINT(...)