VTK  9.5.2
vtkImplicitConeRepresentation.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
29
30#ifndef vtkImplicitConeRepresentation_h
31#define vtkImplicitConeRepresentation_h
32
34#include "vtkInteractionWidgetsModule.h" // For export macro
35#include "vtkVector.h" // For vtkVector3d
36#include "vtkWrappingHints.h" // For VTK_MARSHALAUTO
37
38VTK_ABI_NAMESPACE_BEGIN
39class vtkActor;
41class vtkConeSource;
42class vtkLineSource;
43class vtkSphereSource;
44class vtkTubeFilter;
45class vtkCone;
46class vtkProperty;
47class vtkImageData;
48class vtkPolyData;
49class vtkBox;
50class vtkCellPicker;
51
52#define VTK_MAX_CONE_RESOLUTION 2048
53
54class VTKINTERACTIONWIDGETS_EXPORT VTK_MARSHALAUTO vtkImplicitConeRepresentation
56{
57public:
58 // Manage the state of the widget
70
73 void PrintSelf(ostream& os, vtkIndent indent) override;
74
76
80 void SetOrigin(double x, double y, double z);
81 void SetOrigin(double x[3]);
82 double* GetOrigin() VTK_SIZEHINT(3);
83 void GetOrigin(double xyz[3]);
85
87
91 void SetAxis(double x, double y, double z);
92 void SetAxis(double a[3]);
93 double* GetAxis() VTK_SIZEHINT(3);
94 void GetAxis(double a[3]);
96
98
101 void SetAngle(double r);
102 double GetAngle();
104
106
114 void SetAlongXAxis(bool);
115 vtkGetMacro(AlongXAxis, bool);
116 vtkBooleanMacro(AlongXAxis, bool);
117 void SetAlongYAxis(bool);
118 vtkGetMacro(AlongYAxis, bool);
119 vtkBooleanMacro(AlongYAxis, bool);
120 void SetAlongZAxis(bool);
121 vtkGetMacro(AlongZAxis, bool);
122 vtkBooleanMacro(AlongZAxis, bool);
124
126
132 void SetDrawCone(bool draw);
133 vtkGetMacro(DrawCone, bool);
134 vtkBooleanMacro(DrawCone, bool);
136
138
145 vtkSetClampMacro(Resolution, int, 8, VTK_MAX_CONE_RESOLUTION);
146 vtkGetMacro(Resolution, int);
148
150
156 vtkSetMacro(Tubing, bool);
157 vtkGetMacro(Tubing, bool);
158 vtkBooleanMacro(Tubing, bool);
160
162
166 vtkSetMacro(ScaleEnabled, bool);
167 vtkGetMacro(ScaleEnabled, bool);
168 vtkBooleanMacro(ScaleEnabled, bool);
170
176
182
184
187 vtkGetObjectMacro(AxisProperty, vtkProperty);
190
192
196 vtkGetObjectMacro(ConeProperty, vtkProperty);
199
201
205 vtkGetObjectMacro(EdgesProperty, vtkProperty);
207
209
214 void SetInteractionColor(double, double, double);
215 void SetInteractionColor(double c[3]) { this->SetInteractionColor(c[0], c[1], c[2]); }
216 void SetHandleColor(double, double, double);
217 void SetHandleColor(double c[3]) { this->SetHandleColor(c[0], c[1], c[2]); }
218 void SetForegroundColor(double, double, double);
219 void SetForegroundColor(double c[3]) { this->SetForegroundColor(c[0], c[1], c[2]); }
221
223
226 int ComputeInteractionState(int X, int Y, int modify = 0) override;
227 void PlaceWidget(double bounds[6]) override;
228 void BuildRepresentation() override;
229 void StartWidgetInteraction(double eventPos[2]) override;
230 void WidgetInteraction(double newEventPos[2]) override;
231 void EndWidgetInteraction(double newEventPos[2]) override;
233
235
238 double* GetBounds() override;
239 void GetActors(vtkPropCollection* pc) override;
245
247
253 vtkSetClampMacro(BumpDistance, double, 0.000001, 1);
254 vtkGetMacro(BumpDistance, double);
256
264 void BumpCone(int dir, double factor);
265
272 void PushCone(double distance);
273
285
287
294
295 /*
296 * Register internal Pickers within PickingManager
297 */
298 void RegisterPickers() override;
299
300 void GetCone(vtkCone* cone) const;
301
302protected:
305
306 // The actual cone we're manipulating
308
310
311 // Keep track of event positions
313
314 // Controlling the push operation
315 double BumpDistance = 0.01;
316
317 // Controlling ivars
318 bool AlongXAxis = false;
319 bool AlongYAxis = false;
320 bool AlongZAxis = false;
321
322 // The facet resolution for rendering purposes.
323 int Resolution = 128;
324
325 bool ScaleEnabled = true; // whether the widget can be scaled
326
330 bool DrawCone = true;
331
332 // Optional tubes are represented by extracting boundary edges and tubing
337 bool Tubing = true; // control whether tubing is on
338
339 // The axis line
343
344 // Axis line arrow
348
349 // The origin positioning handle
353
354 // Do the picking
357
358 // Properties used to control the appearance of selected objects and
359 // the manipulator in general.
367
368 // Support GetBounds() method
370
371 void HighlightCone(bool highlight);
372 void HighlightOriginHandle(bool highlight);
373 void HighlightAxis(bool highlight);
374
375 // Methods to manipulate the cone
376 void Rotate(
377 double X, double Y, const vtkVector3d& p1, const vtkVector3d& p2, const vtkVector3d& vpn);
378 void TranslateCone(const vtkVector3d& p1, const vtkVector3d& p2);
379 void TranslateRepresentation(const vtkVector3d& motion) override;
380 void TranslateOrigin(const vtkVector3d& p1, const vtkVector3d& p2);
382 void ScaleAngle(const vtkVector3d& p1, const vtkVector3d& p2);
383 void AdjustAngle(double X, double Y, const vtkVector3d& p1, const vtkVector3d& p2);
384 void Scale(const vtkVector3d& p1, const vtkVector3d& p2, double X, double Y);
386
387 // Intersect oriented infinite cone against bounding box
388 void BuildCone();
389
392};
393
394VTK_ABI_NAMESPACE_END
395#endif
represents an object (geometry & properties) in a rendered scene
Definition vtkActor.h:42
implicit function for a bounding box
Definition vtkBox.h:31
ray-cast cell picker for all kinds of Prop3Ds
generate polygonal cone
implicit function for a cone
Definition vtkCone.h:32
topologically and geometrically regular array of data
~vtkImplicitConeRepresentation() override
void GetPolyData(vtkPolyData *pd)
Grab the polydata that defines the cone.
void SetInteractionColor(double c[3])
Set the color of all the widgets handles (edges, axis, selected cone) and their color during interact...
void StartWidgetInteraction(double eventPos[2]) override
Methods to interface with the vtkImplicitConeWidget.
vtkImplicitConeRepresentation(const vtkImplicitConeRepresentation &)=delete
void SetForegroundColor(double, double, double)
Set the color of all the widgets handles (edges, axis, selected cone) and their color during interact...
void SetAlongXAxis(bool)
Force the cone widget to be aligned with one of the x-y-z axes.
double * GetAxis()
Set/Get the axis of rotation for the cone.
vtkTypeBool HasTranslucentPolygonalGeometry() override
Methods supporting the rendering process.
void SetHandleColor(double c[3])
Set the color of all the widgets handles (edges, axis, selected cone) and their color during interact...
void SetAxis(double x, double y, double z)
Set/Get the axis of rotation for the cone.
double * GetOrigin()
Get the origin of the cone representation.
virtual void SetRepresentationState(InteractionStateType)
Sets the visual appearance of the representation based on the state it is in.
void HighlightCone(bool highlight)
void TranslateOrigin(const vtkVector3d &p1, const vtkVector3d &p2)
void SetAlongYAxis(bool)
Force the cone widget to be aligned with one of the x-y-z axes.
void SetOrigin(double x[3])
Get the origin of the cone representation.
vtkNew< vtkPolyDataMapper > AxisArrowMapper
void SetAlongZAxis(bool)
Force the cone widget to be aligned with one of the x-y-z axes.
void PushCone(double distance)
Push the cone the distance specified along the view vector.
int ComputeInteractionState(int X, int Y, int modify=0) override
Methods to interface with the vtkImplicitConeWidget.
void PrintSelf(ostream &os, vtkIndent indent) override
Standard methods for instances of this class.
int RenderTranslucentPolygonalGeometry(vtkViewport *) override
Methods supporting the rendering process.
void AdjustAngle(double X, double Y, const vtkVector3d &p1, const vtkVector3d &p2)
void ReleaseGraphicsResources(vtkWindow *) override
Methods supporting the rendering process.
void WidgetInteraction(double newEventPos[2]) override
Methods to interface with the vtkImplicitConeWidget.
void RegisterPickers() override
Register internal Pickers in the Picking Manager.
int RenderOpaqueGeometry(vtkViewport *) override
Methods supporting the rendering process.
void PlaceWidget(double bounds[6]) override
Methods to interface with the vtkImplicitConeWidget.
void UpdatePlacement()
Satisfies the superclass API.
void EndWidgetInteraction(double newEventPos[2]) override
Methods to interface with the vtkImplicitConeWidget.
void SetOrigin(double x, double y, double z)
Get the origin of the cone representation.
double GetAngle()
Set/Get the cone angle (expressed in degrees).
vtkNew< vtkPolyDataMapper > OriginHandleMapper
void HighlightAxis(bool highlight)
void SetAngle(double r)
Set/Get the cone angle (expressed in degrees).
void operator=(const vtkImplicitConeRepresentation &)=delete
void GetCone(vtkCone *cone) const
void HighlightOriginHandle(bool highlight)
void SetForegroundColor(double c[3])
Set the color of all the widgets handles (edges, axis, selected cone) and their color during interact...
void SetDrawCone(bool draw)
Enable/disable the drawing of the cone.
void GetActors(vtkPropCollection *pc) override
Methods supporting the rendering process.
double * GetBounds() override
Methods supporting the rendering process.
void SetHandleColor(double, double, double)
Set the color of all the widgets handles (edges, axis, selected cone) and their color during interact...
void Scale(const vtkVector3d &p1, const vtkVector3d &p2, double X, double Y)
void TranslateRepresentation(const vtkVector3d &motion) override
Translate the representation, to be implemented in derived class.
void Rotate(double X, double Y, const vtkVector3d &p1, const vtkVector3d &p2, const vtkVector3d &vpn)
void ScaleAngle(const vtkVector3d &p1, const vtkVector3d &p2)
void TranslateOriginOnAxis(const vtkVector3d &p1, const vtkVector3d &p2)
static vtkImplicitConeRepresentation * New()
void BumpCone(int dir, double factor)
Translate the cone in the direction of the view vector by the specified BumpDistance.
void SetInteractionColor(double, double, double)
Set the color of all the widgets handles (edges, axis, selected cone) and their color during interact...
void BuildRepresentation() override
Methods to interface with the vtkImplicitConeWidget.
void TranslateCone(const vtkVector3d &p1, const vtkVector3d &p2)
a simple class to control print indentation
Definition vtkIndent.h:29
create a line defined by two end points
Allocate and hold a VTK object.
Definition vtkNew.h:58
map vtkPolyData to graphics primitives
concrete dataset represents vertices, lines, polygons, and triangle strips
Definition vtkPolyData.h:72
an ordered list of Props
represent surface properties of a geometric object
Definition vtkProperty.h:61
create a polygonal sphere centered at the origin
filter that generates tubes around lines
abstract specification for Viewports
Definition vtkViewport.h:47
window superclass for vtkRenderWindow
Definition vtkWindow.h:26
int vtkTypeBool
Definition vtkABI.h:64
#define VTK_MAX_CONE_RESOLUTION
#define VTK_SIZEHINT(...)
#define VTK_MARSHALAUTO