33 #ifndef vtkPolarAxesActor_h 34 #define vtkPolarAxesActor_h 36 #define VTK_MAXIMUM_NUMBER_OF_RADIAL_AXES 50 37 #define VTK_DEFAULT_NUMBER_OF_RADIAL_AXES 5 38 #define VTK_MAXIMUM_NUMBER_OF_POLAR_AXIS_TICKS 200 39 #define VTK_MAXIMUM_RATIO 1000.0 40 #define VTK_POLAR_ARC_RESOLUTION_PER_DEG 0.2 44 #include "vtkRenderingAnnotationModule.h" 80 virtual void SetPole(
double[3]);
81 virtual void SetPole(
double,
double,
double);
82 vtkGetVector3Macro(Pole,
double);
90 vtkSetMacro(Log,
bool);
91 vtkGetMacro(Log,
bool);
92 vtkBooleanMacro(Log,
bool);
100 vtkGetMacro(RequestedNumberOfRadialAxes,
vtkIdType);
108 virtual void SetNumberOfPolarAxisTicks(
int);
109 int GetNumberOfPolarAxisTicks();
117 vtkSetMacro(AutoSubdividePolarAxis,
bool);
118 vtkGetMacro(AutoSubdividePolarAxis,
bool);
119 vtkBooleanMacro(AutoSubdividePolarAxis,
bool);
126 vtkSetVector2Macro(
Range,
double);
127 vtkGetVectorMacro(
Range,
double, 2);
134 virtual void SetMinimumRadius(
double);
135 vtkGetMacro(MinimumRadius,
double);
142 virtual void SetMaximumRadius(
double);
143 vtkGetMacro(MaximumRadius,
double);
150 virtual void SetMinimumAngle(
double);
151 vtkGetMacro(MinimumAngle,
double);
158 virtual void SetMaximumAngle(
double);
159 vtkGetMacro(MaximumAngle,
double);
168 vtkSetClampMacro(SmallestVisiblePolarAngle,
double, 0., 5.);
169 vtkGetMacro(SmallestVisiblePolarAngle,
double);
179 vtkGetMacro(TickLocation,
int);
186 vtkSetMacro(RadialUnits,
bool);
187 vtkGetMacro(RadialUnits,
bool);
197 vtkSetMacro(ScreenSize,
double);
198 vtkGetMacro(ScreenSize,
double);
215 vtkSetStringMacro(PolarAxisTitle);
216 vtkGetStringMacro(PolarAxisTitle);
223 vtkSetStringMacro(PolarLabelFormat);
224 vtkGetStringMacro(PolarLabelFormat);
229 VTK_EXPONENT_BOTTOM = 0,
230 VTK_EXPONENT_EXTERN = 1,
231 VTK_EXPONENT_LABELS = 2
240 vtkSetClampMacro(ExponentLocation,
int, VTK_EXPONENT_BOTTOM, VTK_EXPONENT_LABELS);
241 vtkGetMacro(ExponentLocation,
int);
248 vtkSetStringMacro(RadialAngleFormat);
249 vtkGetStringMacro(RadialAngleFormat);
263 vtkSetMacro(EnableDistanceLOD,
int);
264 vtkGetMacro(EnableDistanceLOD,
int);
271 vtkSetClampMacro(DistanceLODThreshold,
double, 0.0, 1.0);
272 vtkGetMacro(DistanceLODThreshold,
double);
279 vtkSetMacro(EnableViewAngleLOD,
int);
280 vtkGetMacro(EnableViewAngleLOD,
int);
287 vtkSetClampMacro(ViewAngleLODThreshold,
double, 0., 1.);
288 vtkGetMacro(ViewAngleLODThreshold,
double);
315 vtkBooleanMacro(DrawPolarArcsGridlines,
vtkTypeBool);
324 vtkBooleanMacro(PolarTitleVisibility,
vtkTypeBool);
329 VTK_TITLE_BOTTOM = 0,
338 vtkSetClampMacro(RadialAxisTitleLocation,
int, VTK_TITLE_BOTTOM, VTK_TITLE_EXTERN);
339 vtkGetMacro(RadialAxisTitleLocation,
int);
347 vtkSetClampMacro(PolarAxisTitleLocation,
int, VTK_TITLE_BOTTOM, VTK_TITLE_EXTERN);
348 vtkGetMacro(PolarAxisTitleLocation,
int);
357 vtkBooleanMacro(PolarLabelVisibility,
vtkTypeBool);
367 vtkSetMacro(ArcTicksOriginToPolarAxis,
vtkTypeBool);
368 vtkGetMacro(ArcTicksOriginToPolarAxis,
vtkTypeBool);
369 vtkBooleanMacro(ArcTicksOriginToPolarAxis,
vtkTypeBool);
379 vtkSetMacro(RadialAxesOriginToPolarAxis,
vtkTypeBool);
380 vtkGetMacro(RadialAxesOriginToPolarAxis,
vtkTypeBool);
381 vtkBooleanMacro(RadialAxesOriginToPolarAxis,
vtkTypeBool);
408 vtkBooleanMacro(AxisMinorTickVisibility,
vtkTypeBool);
426 vtkBooleanMacro(ArcMinorTickVisibility,
vtkTypeBool);
433 vtkSetMacro(ArcMajorTickSize,
double);
434 vtkGetMacro(ArcMajorTickSize,
double);
441 vtkSetMacro(PolarAxisMajorTickSize,
double);
442 vtkGetMacro(PolarAxisMajorTickSize,
double);
449 vtkSetMacro(LastRadialAxisMajorTickSize,
double);
450 vtkGetMacro(LastRadialAxisMajorTickSize,
double);
457 vtkSetMacro(PolarAxisTickRatioSize,
double);
458 vtkGetMacro(PolarAxisTickRatioSize,
double);
465 vtkSetMacro(LastAxisTickRatioSize,
double);
466 vtkGetMacro(LastAxisTickRatioSize,
double);
473 vtkSetMacro(ArcTickRatioSize,
double);
474 vtkGetMacro(ArcTickRatioSize,
double);
481 vtkSetMacro(PolarAxisMajorTickThickness,
double);
482 vtkGetMacro(PolarAxisMajorTickThickness,
double);
489 vtkSetMacro(LastRadialAxisMajorTickThickness,
double);
490 vtkGetMacro(LastRadialAxisMajorTickThickness,
double);
497 vtkSetMacro(ArcMajorTickThickness,
double);
498 vtkGetMacro(ArcMajorTickThickness,
double);
505 vtkSetMacro(PolarAxisTickRatioThickness,
double);
506 vtkGetMacro(PolarAxisTickRatioThickness,
double);
513 vtkSetMacro(LastAxisTickRatioThickness,
double);
514 vtkGetMacro(LastAxisTickRatioThickness,
double);
521 vtkSetMacro(ArcTickRatioThickness,
double);
522 vtkGetMacro(ArcTickRatioThickness,
double);
529 vtkSetMacro(DeltaRangeMajor,
double);
530 vtkGetMacro(DeltaRangeMajor,
double);
537 vtkSetMacro(DeltaRangeMinor,
double);
538 vtkGetMacro(DeltaRangeMinor,
double);
545 vtkSetMacro(DeltaAngleMajor,
double);
546 vtkGetMacro(DeltaAngleMajor,
double);
553 vtkSetMacro(DeltaAngleMinor,
double);
554 vtkGetMacro(DeltaAngleMinor,
double);
561 vtkSetMacro(DeltaAngleRadialAxes,
double);
562 vtkGetMacro(DeltaAngleRadialAxes,
double);
573 vtkBooleanMacro(RadialAxesVisibility,
vtkTypeBool);
582 vtkBooleanMacro(RadialTitleVisibility,
vtkTypeBool);
598 void SetUse2DMode(
int val);
646 virtual void SetLastRadialAxisProperty(
vtkProperty* p);
647 vtkGetObjectMacro(LastRadialAxisProperty,
vtkProperty);
654 virtual void SetSecondaryRadialAxesProperty(
vtkProperty* p);
655 vtkGetObjectMacro(SecondaryRadialAxesProperty,
vtkProperty);
670 virtual void SetSecondaryPolarArcsProperty(
vtkProperty* p);
681 vtkSetVector6Macro(Bounds,
double);
684 double& xmin,
double& xmax,
double& ymin,
double& ymax,
double& zmin,
double& zmax);
692 vtkSetClampMacro(Ratio,
double, 0.001, 100.0);
693 vtkGetMacro(Ratio,
double);
703 bool CheckMembersConsistency();
714 void CalculateBounds();
729 void CreateRadialAxes(
int axisCount);
734 void BuildRadialAxes();
742 void AutoComputeTicksProperties();
747 double ComputeIdealStep(
int subDivsRequired,
double rangeLength,
int maxSubDivs = 1000);
752 void BuildArcTicks();
758 void StoreTicksPtsFromParamEllipse(
759 double a,
double angleEllipseRad,
double tickSize,
vtkPoints* tickPts);
764 void BuildPolarAxisLabelsArcs();
769 void BuildPolarAxisLabelsArcsLog();
774 void BuildLabelsLog();
776 void BuildPolarArcsLog();
781 std::string FindExponentAndAdjustValues(std::list<double>& valuesList);
786 void GetSignificantPartFromValues(
vtkStringArray* valuesStr, std::list<double>& valuesList);
793 double FSign(
double,
double);
806 static double ComputeEllipseAngle(
double angleInDegrees,
double ratio);
811 virtual void ComputeDeltaAngleRadialAxes(
vtkIdType);
vtkProperty * SecondaryRadialAxesProperty
General properties of radial axes.
double MinimumRadius
Minimum polar radius.
int PolarAxisTitleLocation
Define the alignment of the title related to the polar axis.
vtkPolyDataMapper * ArcTickPolyDataMapper
vtk object for arc Ticks
vtkActor * ArcTickActor
vtk object for arc Ticks
bool AutoScaleRadius
Auto-scale polar radius (with respect to average length scale of x-y bounding box).
represents an object (geometry & properties) in a rendered scene
vtkTextProperty * SecondaryRadialAxesTextProperty
Text properties of secondary radial axes.
double MaximumAngle
Maximum polar angle Default: 90.
int TickLocation
Describes the tick orientation for the graph elements involved by this property.
vtkPolyDataMapper * SecondaryPolarArcsMapper
Structures for secondary polar arcs.
char * PolarLabelFormat
Title to be used for the polar axis NB: Non-polar radial axes use the polar angle as title and have n...
vtkTypeBool PolarAxisVisibility
Visibility of polar axis and its title, labels, ticks (major only)
abstract specification for Viewports
represent surface properties of a geometric object
virtual int RenderOverlay(vtkViewport *)
int EnableDistanceLOD
If enabled the actor will not be visible at a certain distance from the camera.
double Ratio
Ratio for elliptical representation of the polar axes actor.
vtkPolyDataMapper * PolarArcsMapper
record modification and/or execution time
Create an axis with tick marks and labels.
vtkPolyData * SecondaryPolarArcs
Structures for secondary polar arcs.
double PolarAxisMajorTickThickness
Defines the tickness of the major ticks.
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
vtkActor * ArcMinorTickActor
vtk object for arc Ticks
char * PolarAxisTitle
Title to be used for the polar axis NB: Non-polar radial axes use the polar angle as title and have n...
a vtkAbstractArray subclass for strings
vtkTextProperty * PolarAxisTitleTextProperty
Text properties of polar axis title and labels.
double SmallestVisiblePolarAngle
Smallest radial angle distinguishable from polar axis.
vtkTypeBool PolarTickVisibility
Hold visibility for all present ticks.
vtkActor * SecondaryPolarArcsActor
Structures for secondary polar arcs.
vtkTypeBool RadialAxesVisibility
Visibility of radial axes and their titles.
concrete dataset represents vertices, lines, polygons, and triangle strips
static vtkActor * New()
Creates an actor with the following defaults: origin(0,0,0) position=(0,0,0) scale=(1,1,1) visibility=1 pickable=1 dragable=1 orientation=(0,0,0).
double MinimumAngle
Minimum polar angle Default: 0.
vtkAxisActor ** RadialAxes
Control variables for non-polar radial axes.
double PolarAxisMajorTickSize
Defines the length of the ticks located on the last arc.
vtkActor * PolarArcsActor
void ReleaseGraphicsResources(vtkWindow *) override
Release any graphics resources that are being consumed by this actor.
double ScreenSize
Text screen size.
window superclass for vtkRenderWindow
vtkProperty * PolarAxisProperty
General properties of polar axis Behavior may be override by polar axis ticks 's actor property...
vtkTypeBool AxisTickVisibility
Hold visibility of major/minor ticks for the polar axis and the last radial axis. ...
double PolarAxisTickRatioSize
Set the ratios between major tick Size for each ticks location.
int ExponentLocation
Define the location of the exponent of the labels values, located on the polar axis.
vtkTypeBool DrawRadialGridlines
Visibility of the inner axes (overridden to 0 if RadialAxesVisibility is set to 0) ...
int RadialAxisTitleLocation
Define the alignment of the title related to the radial axis.
double DeltaAngleMinor
Angle between 2 minor ticks on the last arc.
double DeltaAngleMajor
Angle between 2 major ticks on the last arc.
a simple class to control print indentation
int RequestedNumberOfRadialAxes
Requested Number of radial axes.
a virtual camera for 3D rendering
vtkTypeBool DrawPolarArcsGridlines
Visibility of the inner arcs (overridden to 0 if PolarArcsVisibility is set to 0) ...
vtkPolyDataMapper * ArcMinorTickPolyDataMapper
vtk object for arc Ticks
int NumberOfRadialAxes
Number of radial axes.
double * GetBounds() override
Return a reference to the Prop3D's composite transform.
represent text properties.
vtkProperty * LastRadialAxisProperty
General properties of last radial axis.
vtkTypeBool PolarTitleVisibility
Visibility of polar axis and its title, labels, ticks (major only)
map vtkPolyData to graphics primitives
vtkAxisActor * PolarAxis
Control variables for polar axis.
double TitleScale
Title scale factor.
double PolarAxisTickRatioThickness
Set the ratios between major tick thickness for each ticks location.
double ViewAngleLODThreshold
This determines at what view angle to geometry will make the geometry not visible.
bool RadialUnits
Display angle units (degrees) to label radial axes Default is true.
vtkCamera * Camera
Camera attached to the polar axes system.
vtkPolyData * ArcMinorTickPolyData
vtk object for arc Ticks
vtkTypeBool PolarLabelVisibility
Visibility of polar axis and its title, labels, ticks (major only)
double LabelScale
Label scale factor.
vtkTypeBool PolarArcsVisibility
Visibility of polar arcs.
auto Range(IterablePtr iterable, Options &&... opts) -> typename detail::IterableTraits< typename detail::StripPointers< IterablePtr >::type >::RangeType
Generate an iterable STL proxy object for a VTK container.
vtkTypeBool RadialTitleVisibility
Visibility of radial axes and their titles.
int EnableViewAngleLOD
If enabled the actor will not be visible at a certain view angle.
double DeltaAngleRadialAxes
Angle between 2 radial Axes.
vtkTextProperty * LastRadialAxisTextProperty
Text properties of last radial axis.
int RenderTranslucentPolygonalGeometry(vtkViewport *) override
Draw the polar axes.
int ArcTicksOriginToPolarAxis
If On, the ticks are drawn from the angle of the polarAxis (i.e.
double MaximumRadius
Maximum polar radius.
vtkPoints * ArcMajorTickPts
Keep the arc major ticks vtkPoints instances.
int RadialAxesOriginToPolarAxis
If On, the radial axes are drawn from the angle of the polarAxis (i.e.
double DeltaRangeMajor
Step between 2 major ticks, in range value (values displayed on the axis).
vtkPoints * ArcMinorTickPts
Keep the arc minor ticks vtkPoints instances.
int RenderOpaqueGeometry(vtkViewport *viewport) override
Support the standard render methods.
bool Log
Enable/Disable log scale Default: 0.
represent and manipulate 3D points
char * RadialAngleFormat
String to format angle values displayed on the radial axes.
vtkTextProperty * PolarAxisLabelTextProperty
Text properties of polar axis title and labels.
vtkPolyData * ArcTickPolyData
vtk object for arc Ticks
#define VTK_MAXIMUM_NUMBER_OF_RADIAL_AXES
vtkTypeBool ArcTickVisibility
Enable / Disable major/minor tick visibility on the last arc displayed.
bool AutoSubdividePolarAxis
Whether the number of polar axis ticks and arcs should be automatically calculated.
double DeltaRangeMinor
Step between 2 minor ticks, in range value (values displayed on the axis).
double DistanceLODThreshold
Default is 0.80 This determines at what fraction of camera far clip range, actor is not visible...
create an actor of a polar axes -