VTK  9.5.20251121
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
75
76#ifndef vtkSphereWidget_h
77#define vtkSphereWidget_h
78
79#include "vtk3DWidget.h"
80#include "vtkInteractionWidgetsModule.h" // For export macro
81#include "vtkSphereSource.h" // Needed for faster access to the sphere source
82
83VTK_ABI_NAMESPACE_BEGIN
84class vtkActor;
86class vtkPoints;
87class vtkPolyData;
88class vtkSphereSource;
89class vtkSphere;
90class vtkCellPicker;
91class vtkProperty;
92
93#define VTK_SPHERE_OFF 0
94#define VTK_SPHERE_WIREFRAME 1
95#define VTK_SPHERE_SURFACE 2
96
97class VTKINTERACTIONWIDGETS_EXPORT vtkSphereWidget : public vtk3DWidget
98{
99public:
104
106 void PrintSelf(ostream& os, vtkIndent indent) override;
107
109
112 void SetEnabled(int) override;
113 void PlaceWidget(double bounds[6]) override;
114 void PlaceWidget() override { this->Superclass::PlaceWidget(); }
116 double xmin, double xmax, double ymin, double ymax, double zmin, double zmax) override
117 {
118 this->Superclass::PlaceWidget(xmin, xmax, ymin, ymax, zmin, zmax);
119 }
120
121
123
129 vtkGetMacro(Representation, int);
134
139 void SetThetaResolution(int r) { this->SphereSource->SetThetaResolution(r); }
140 int GetThetaResolution() { return this->SphereSource->GetThetaResolution(); }
141
146 void SetPhiResolution(int r) { this->SphereSource->SetPhiResolution(r); }
147 int GetPhiResolution() { return this->SphereSource->GetPhiResolution(); }
148
150
153 void SetRadius(double r)
154 {
155 if (r <= 0)
156 {
157 r = .00001;
158 }
159 this->SphereSource->SetRadius(r);
160 }
161 double GetRadius() { return this->SphereSource->GetRadius(); }
163
165
168 void SetCenter(double x, double y, double z) { this->SphereSource->SetCenter(x, y, z); }
169 void SetCenter(double x[3]) { this->SetCenter(x[0], x[1], x[2]); }
170 double* GetCenter() VTK_SIZEHINT(3) { return this->SphereSource->GetCenter(); }
171 void GetCenter(double xyz[3]) { this->SphereSource->GetCenter(xyz); }
173
175
181 vtkBooleanMacro(Translation, vtkTypeBool);
182 vtkSetMacro(Scale, vtkTypeBool);
183 vtkGetMacro(Scale, vtkTypeBool);
184 vtkBooleanMacro(Scale, vtkTypeBool);
186
188
196 vtkBooleanMacro(HandleVisibility, vtkTypeBool);
198
200
205 vtkSetVector3Macro(HandleDirection, double);
206 vtkGetVector3Macro(HandleDirection, double);
208
210
213 vtkGetVector3Macro(HandlePosition, double);
215
224
231 void GetSphere(vtkSphere* sphere);
232
234
238 vtkGetObjectMacro(SphereProperty, vtkProperty);
241
243
248 vtkGetObjectMacro(HandleProperty, vtkProperty);
251
252protected:
255
256 // Manage the state of the widget
257 int State;
266
267 // handles the events
268 static void ProcessEvents(
269 vtkObject* object, unsigned long event, void* clientdata, void* calldata);
270
271 // ProcessEvents() dispatches to these methods.
277
278 // the sphere
282 void HighlightSphere(int highlight);
284
285 // The representation of the sphere
287
288 // Do the picking
290
291 // Register internal Pickers within PickingManager
292 void RegisterPickers() override;
293
294 // Methods to manipulate the sphere widget
297 void Translate(double* p1, double* p2);
298 void ScaleSphere(double* p1, double* p2, int X, int Y);
299 void MoveHandle(double* p1, double* p2, int X, int Y);
300 void PlaceHandle(double* center, double radius);
301
302 // Properties used to control the appearance of selected objects and
303 // the manipulator in general.
309
310 // Managing the handle
317 double HandlePosition[3];
318 void SizeHandles() override;
319
320private:
321 vtkSphereWidget(const vtkSphereWidget&) = delete;
322 void operator=(const vtkSphereWidget&) = delete;
323};
324
325VTK_ABI_NAMESPACE_END
326#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:151
ray-cast cell picker for all kinds of Prop3Ds
a simple class to control print indentation
Definition vtkIndent.h:108
represent and manipulate 3D points
Definition vtkPoints.h:139
map vtkPolyData to graphics primitives
concrete dataset represents vertices, lines, polygons, and triangle strips
represent surface properties of a geometric object
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:133
int vtkTypeBool
Definition vtkABI.h:64
#define VTK_SPHERE_SURFACE
#define VTK_SPHERE_OFF
#define VTK_SPHERE_WIREFRAME
#define VTK_SIZEHINT(...)