VTK  9.5.2
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
43
44#ifndef vtkSphereWidget_h
45#define vtkSphereWidget_h
46
47#include "vtk3DWidget.h"
48#include "vtkInteractionWidgetsModule.h" // For export macro
49#include "vtkSphereSource.h" // Needed for faster access to the sphere source
50
51VTK_ABI_NAMESPACE_BEGIN
52class vtkActor;
54class vtkPoints;
55class vtkPolyData;
56class vtkSphereSource;
57class vtkSphere;
58class vtkCellPicker;
59class vtkProperty;
60
61#define VTK_SPHERE_OFF 0
62#define VTK_SPHERE_WIREFRAME 1
63#define VTK_SPHERE_SURFACE 2
64
65class VTKINTERACTIONWIDGETS_EXPORT vtkSphereWidget : public vtk3DWidget
66{
67public:
72
74 void PrintSelf(ostream& os, vtkIndent indent) override;
75
77
80 void SetEnabled(int) override;
81 void PlaceWidget(double bounds[6]) override;
82 void PlaceWidget() override { this->Superclass::PlaceWidget(); }
84 double xmin, double xmax, double ymin, double ymax, double zmin, double zmax) override
85 {
86 this->Superclass::PlaceWidget(xmin, xmax, ymin, ymax, zmin, zmax);
87 }
88
89
91
97 vtkGetMacro(Representation, int);
102
107 void SetThetaResolution(int r) { this->SphereSource->SetThetaResolution(r); }
108 int GetThetaResolution() { return this->SphereSource->GetThetaResolution(); }
109
114 void SetPhiResolution(int r) { this->SphereSource->SetPhiResolution(r); }
115 int GetPhiResolution() { return this->SphereSource->GetPhiResolution(); }
116
118
121 void SetRadius(double r)
122 {
123 if (r <= 0)
124 {
125 r = .00001;
126 }
127 this->SphereSource->SetRadius(r);
128 }
129 double GetRadius() { return this->SphereSource->GetRadius(); }
131
133
136 void SetCenter(double x, double y, double z) { this->SphereSource->SetCenter(x, y, z); }
137 void SetCenter(double x[3]) { this->SetCenter(x[0], x[1], x[2]); }
138 double* GetCenter() VTK_SIZEHINT(3) { return this->SphereSource->GetCenter(); }
139 void GetCenter(double xyz[3]) { this->SphereSource->GetCenter(xyz); }
141
143
149 vtkBooleanMacro(Translation, vtkTypeBool);
150 vtkSetMacro(Scale, vtkTypeBool);
151 vtkGetMacro(Scale, vtkTypeBool);
152 vtkBooleanMacro(Scale, vtkTypeBool);
154
156
164 vtkBooleanMacro(HandleVisibility, vtkTypeBool);
166
168
173 vtkSetVector3Macro(HandleDirection, double);
174 vtkGetVector3Macro(HandleDirection, double);
176
178
181 vtkGetVector3Macro(HandlePosition, double);
183
192
199 void GetSphere(vtkSphere* sphere);
200
202
206 vtkGetObjectMacro(SphereProperty, vtkProperty);
209
211
216 vtkGetObjectMacro(HandleProperty, vtkProperty);
219
220protected:
223
224 // Manage the state of the widget
225 int State;
234
235 // handles the events
236 static void ProcessEvents(
237 vtkObject* object, unsigned long event, void* clientdata, void* calldata);
238
239 // ProcessEvents() dispatches to these methods.
245
246 // the sphere
250 void HighlightSphere(int highlight);
252
253 // The representation of the sphere
255
256 // Do the picking
258
259 // Register internal Pickers within PickingManager
260 void RegisterPickers() override;
261
262 // Methods to manipulate the sphere widget
265 void Translate(double* p1, double* p2);
266 void ScaleSphere(double* p1, double* p2, int X, int Y);
267 void MoveHandle(double* p1, double* p2, int X, int Y);
268 void PlaceHandle(double* center, double radius);
269
270 // Properties used to control the appearance of selected objects and
271 // the manipulator in general.
277
278 // Managing the handle
285 double HandlePosition[3];
286 void SizeHandles() override;
287
288private:
289 vtkSphereWidget(const vtkSphereWidget&) = delete;
290 void operator=(const vtkSphereWidget&) = delete;
291};
292
293VTK_ABI_NAMESPACE_END
294#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:61
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(...)