26#ifndef vtkOrientationRepresentation_h
27#define vtkOrientationRepresentation_h
29#include "vtkInteractionWidgetsModule.h"
36VTK_ABI_NAMESPACE_BEGIN
94 this->SetProperty(Axis::X_AXIS, selected, property);
98 this->SetProperty(Axis::Y_AXIS, selected, property);
102 this->SetProperty(Axis::Z_AXIS, selected, property);
117 vtkSetClampMacro(TorusLength,
double, MINIMUM_TORUS_LENGTH, MAXIMUM_TORUS_LENGTH);
118 vtkGetMacro(TorusLength,
double);
129 vtkSetClampMacro(TorusThickness,
double, MINIMUM_TORUS_THICKNESS, MAXIMUM_TORUS_THICKNESS);
130 vtkGetMacro(TorusThickness,
double);
138 vtkSetMacro(ShowArrows,
bool);
139 vtkGetMacro(ShowArrows,
bool);
140 vtkBooleanMacro(ShowArrows,
bool);
149 vtkSetClampMacro(ArrowDistance,
double, MINIMUM_ARROW_DISTANCE, MAXIMUM_ARROW_DISTANCE);
150 vtkGetMacro(ArrowDistance,
double);
162 vtkSetClampMacro(ArrowLength,
double, MINIMUM_ARROW_LENGTH, MAXIMUM_ARROW_LENGTH);
163 vtkGetMacro(ArrowLength,
double);
175 vtkSetMacro(ArrowTipLength,
double);
176 vtkGetMacro(ArrowTipLength,
double);
185 vtkSetClampMacro(ArrowTipRadius,
double, MINIMUM_ARROW_TIP_RADIUS, MAXIMUM_ARROW_TIP_RADIUS);
186 vtkGetMacro(ArrowTipRadius,
double);
196 ArrowShaftRadius,
double, MINIMUM_ARROW_SHAFT_RADIUS, MAXIMUM_ARROW_SHAFT_RADIUS);
197 vtkGetMacro(ArrowShaftRadius,
double);
231 void SetInteractionState(
int state);
236 void RegisterPickers() override;
282 void InitTransforms();
288 void Rotate(
const double p1[4],
const double p2[4],
const double baseVector[3]);
296 double LastEventPosition[3] = { 0.0 };
314 std::vector<vtkSmartPointer<vtkArrowSource>> ArrowSources;
315 std::vector<vtkSmartPointer<vtkSuperquadricSource>> TorusSources;
316 std::map<Axis, vtkNew<vtkActor>> TorusActors;
317 std::map<Axis, vtkNew<vtkActor>> ArrowsActors;
320 std::map<Axis, vtkSmartPointer<vtkProperty>> Properties;
321 std::map<Axis, vtkSmartPointer<vtkProperty>> SelectedProperties;
323 double TorusLength = 7.5;
324 double TorusThickness = 0.005;
326 bool ShowArrows =
false;
327 double ArrowDistance = 0.0;
328 double ArrowLength = 0.05;
329 double ArrowTipLength = 1.0;
330 double ArrowTipRadius = 0.03;
331 double ArrowShaftRadius = 0.001;
334 static constexpr double MINIMUM_TORUS_THICKNESS = 0.001;
335 static constexpr double MAXIMUM_TORUS_THICKNESS = 0.1;
336 static constexpr double MINIMUM_TORUS_LENGTH = 0.01;
337 static constexpr double MAXIMUM_TORUS_LENGTH = 100.0;
339 static constexpr double MINIMUM_ARROW_DISTANCE = 0.0;
340 static constexpr double MAXIMUM_ARROW_DISTANCE = 0.5;
341 static constexpr double MINIMUM_ARROW_LENGTH = 0.01;
342 static constexpr double MAXIMUM_ARROW_LENGTH = 0.5;
343 static constexpr double MINIMUM_ARROW_TIP_RADIUS = 0.001;
344 static constexpr double MAXIMUM_ARROW_TIP_RADIUS = 0.5;
345 static constexpr double MINIMUM_ARROW_SHAFT_RADIUS = 0.001;
346 static constexpr double MAXIMUM_ARROW_SHAFT_RADIUS = 0.5;
represents an object (geometry & properties) in a rendered scene
Appends a cylinder to a cone to form an arrow.
implicit function for a bounding box
ray-cast cell picker for all kinds of Prop3Ds
a simple class to control print indentation
Allocate and hold a VTK object.
a class defining the representation for the vtkOrientationWidget
virtual void SetOrientation(double values[3])
Set/Get the orientation values.
virtual void SetOrientationX(double value)
Set/Get the orientation values.
void PrintSelf(ostream &os, vtkIndent indent) override
Standard methods for the class.
vtkProperty * GetPropertyZ(bool selected)
Set/Get the properties values.
void SetPropertyX(bool selected, vtkProperty *property)
Set/Get the properties values.
static vtkOrientationRepresentation * New()
Instantiate the class.
vtkOrientationRepresentation()
vtkProperty * GetPropertyY(bool selected)
Set/Get the properties values.
~vtkOrientationRepresentation() override
void SetPropertyZ(bool selected, vtkProperty *property)
Set/Get the properties values.
double GetOrientationY()
Set/Get the orientation values.
virtual void SetOrientationZ(double value)
Set/Get the orientation values.
vtkProperty * GetProperty(int axis, bool selected)
Set/Get the properties values.
void PlaceWidget(double bounds[6]) override
These are methods that satisfy vtkWidgetRepresentation's API.
virtual void SetOrientationY(double value)
Set/Get the orientation values.
double * GetBounds() override
These are methods that satisfy vtkWidgetRepresentation's API.
void SetPropertyY(bool selected, vtkProperty *property)
Set/Get the properties values.
double GetOrientationZ()
Set/Get the orientation values.
vtkProperty * GetPropertyX(bool selected)
Set/Get the properties values.
double * GetOrientation()
Set/Get the orientation values.
void BuildRepresentation() override
These are methods that satisfy vtkWidgetRepresentation's API.
double GetOrientationX()
Set/Get the orientation values.
virtual void CreateDefaultProperties()
vtkTransform * GetTransform()
Get the orientation transform.
void StartWidgetInteraction(double e[2]) override
These are methods that satisfy vtkWidgetRepresentation's API.
int ComputeInteractionState(int X, int Y, int modify=0) override
These are methods that satisfy vtkWidgetRepresentation's API.
void WidgetInteraction(double e[2]) override
These are methods that satisfy vtkWidgetRepresentation's API.
void SetProperty(int axis, bool selected, vtkProperty *property)
Set/Get the properties values.
compute normals for polygonal mesh
represent surface properties of a geometric object
Hold a reference to a vtkObjectBase instance.
create a polygonal superquadric centered at the origin
abstract specification for Viewports
window superclass for vtkRenderWindow
#define VTK_SIZEHINT(...)