VTK  9.4.20251007
vtkSphereWidget.h
Go to the documentation of this file.
1// SPDX-FileCopyrightText: Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
2// SPDX-License-Identifier: BSD-3-Clause
46
47#ifndef vtkSphereWidget_h
48#define vtkSphereWidget_h
49
50#include "vtk3DWidget.h"
51#include "vtkInteractionWidgetsModule.h" // For export macro
52#include "vtkSphereSource.h" // Needed for faster access to the sphere source
53
54VTK_ABI_NAMESPACE_BEGIN
55class vtkActor;
57class vtkPoints;
58class vtkPolyData;
59class vtkSphereSource;
60class vtkSphere;
61class vtkCellPicker;
62class vtkProperty;
63
64#define VTK_SPHERE_OFF 0
65#define VTK_SPHERE_WIREFRAME 1
66#define VTK_SPHERE_SURFACE 2
67
68class VTKINTERACTIONWIDGETS_EXPORT vtkSphereWidget : public vtk3DWidget
69{
70public:
75
77 void PrintSelf(ostream& os, vtkIndent indent) override;
78
80
83 void SetEnabled(int) override;
84 void PlaceWidget(double bounds[6]) override;
85 void PlaceWidget() override { this->Superclass::PlaceWidget(); }
87 double xmin, double xmax, double ymin, double ymax, double zmin, double zmax) override
88 {
89 this->Superclass::PlaceWidget(xmin, xmax, ymin, ymax, zmin, zmax);
90 }
91
92
94
100 vtkGetMacro(Representation, int);
105
110 void SetThetaResolution(int r) { this->SphereSource->SetThetaResolution(r); }
111 int GetThetaResolution() { return this->SphereSource->GetThetaResolution(); }
112
117 void SetPhiResolution(int r) { this->SphereSource->SetPhiResolution(r); }
118 int GetPhiResolution() { return this->SphereSource->GetPhiResolution(); }
119
121
124 void SetRadius(double r)
125 {
126 if (r <= 0)
127 {
128 r = .00001;
129 }
130 this->SphereSource->SetRadius(r);
131 }
132 double GetRadius() { return this->SphereSource->GetRadius(); }
134
136
139 void SetCenter(double x, double y, double z) { this->SphereSource->SetCenter(x, y, z); }
140 void SetCenter(double x[3]) { this->SetCenter(x[0], x[1], x[2]); }
141 double* GetCenter() VTK_SIZEHINT(3) { return this->SphereSource->GetCenter(); }
142 void GetCenter(double xyz[3]) { this->SphereSource->GetCenter(xyz); }
144
146
152 vtkBooleanMacro(Translation, vtkTypeBool);
153 vtkSetMacro(Scale, vtkTypeBool);
154 vtkGetMacro(Scale, vtkTypeBool);
155 vtkBooleanMacro(Scale, vtkTypeBool);
157
159
167 vtkBooleanMacro(HandleVisibility, vtkTypeBool);
169
171
176 vtkSetVector3Macro(HandleDirection, double);
177 vtkGetVector3Macro(HandleDirection, double);
179
181
184 vtkGetVector3Macro(HandlePosition, double);
186
195
202 void GetSphere(vtkSphere* sphere);
203
205
209 vtkGetObjectMacro(SphereProperty, vtkProperty);
212
214
219 vtkGetObjectMacro(HandleProperty, vtkProperty);
222
223protected:
226
227 // Manage the state of the widget
228 int State;
237
238 // handles the events
239 static void ProcessEvents(
240 vtkObject* object, unsigned long event, void* clientdata, void* calldata);
241
242 // ProcessEvents() dispatches to these methods.
248
249 // the sphere
253 void HighlightSphere(int highlight);
255
256 // The representation of the sphere
258
259 // Do the picking
261
262 // Register internal Pickers within PickingManager
263 void RegisterPickers() override;
264
265 // Methods to manipulate the sphere widget
268 void Translate(double* p1, double* p2);
269 void ScaleSphere(double* p1, double* p2, int X, int Y);
270 void MoveHandle(double* p1, double* p2, int X, int Y);
271 void PlaceHandle(double* center, double radius);
272
273 // Properties used to control the appearance of selected objects and
274 // the manipulator in general.
280
281 // Managing the handle
288 double HandlePosition[3];
289 void SizeHandles() override;
290
291private:
292 vtkSphereWidget(const vtkSphereWidget&) = delete;
293 void operator=(const vtkSphereWidget&) = delete;
294};
295
296VTK_ABI_NAMESPACE_END
297#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:42
ray-cast cell picker for all kinds of Prop3Ds
a simple class to control print indentation
Definition vtkIndent.h:29
represent and manipulate 3D points
Definition vtkPoints.h:30
map vtkPolyData to graphics primitives
concrete dataset represents vertices, lines, polygons, and triangle strips
Definition vtkPolyData.h:72
represent surface properties of a geometric object
Definition vtkProperty.h:60
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:24
int vtkTypeBool
Definition vtkABI.h:64
#define VTK_SPHERE_SURFACE
#define VTK_SPHERE_OFF
#define VTK_SPHERE_WIREFRAME
#define VTK_SIZEHINT(...)