42#ifndef vtkPolarAxesActor_h
43#define vtkPolarAxesActor_h
45#define VTK_MAXIMUM_NUMBER_OF_RADIAL_AXES 50
46#define VTK_DEFAULT_NUMBER_OF_RADIAL_AXES 5
47#define VTK_MAXIMUM_NUMBER_OF_POLAR_AXIS_TICKS 200
48#define VTK_MAXIMUM_RATIO 1000.0
49#define VTK_POLAR_ARC_RESOLUTION_PER_DEG 0.2
53#include "vtkRenderingAnnotationModule.h"
90 virtual void SetPole(
double,
double,
double);
91 vtkGetVector3Macro(Pole,
double);
99 vtkSetMacro(Log,
bool);
100 vtkGetMacro(Log,
bool);
101 vtkBooleanMacro(Log,
bool);
126 vtkSetMacro(AutoSubdividePolarAxis,
bool);
127 vtkGetMacro(AutoSubdividePolarAxis,
bool);
128 vtkBooleanMacro(AutoSubdividePolarAxis,
bool);
136 vtkGetVectorMacro(
Range,
double, 2);
144 vtkGetMacro(MinimumRadius,
double);
152 vtkGetMacro(MaximumRadius,
double);
160 vtkGetMacro(MinimumAngle,
double);
168 vtkGetMacro(MaximumAngle,
double);
177 vtkSetClampMacro(SmallestVisiblePolarAngle,
double, 0., 5.);
178 vtkGetMacro(SmallestVisiblePolarAngle,
double);
188 vtkGetMacro(TickLocation,
int);
195 vtkSetMacro(RadialUnits,
bool);
196 vtkGetMacro(RadialUnits,
bool);
206 vtkSetMacro(ScreenSize,
double);
207 vtkGetMacro(ScreenSize,
double);
224 vtkSetStringMacro(PolarAxisTitle);
225 vtkGetStringMacro(PolarAxisTitle);
232 vtkSetStringMacro(PolarLabelFormat);
233 vtkGetStringMacro(PolarLabelFormat);
238 VTK_EXPONENT_BOTTOM = 0,
239 VTK_EXPONENT_EXTERN = 1,
240 VTK_EXPONENT_LABELS = 2
257 vtkSetStringMacro(RadialAngleFormat);
258 vtkGetStringMacro(RadialAngleFormat);
272 vtkSetMacro(EnableDistanceLOD,
int);
273 vtkGetMacro(EnableDistanceLOD,
int);
280 vtkSetClampMacro(DistanceLODThreshold,
double, 0.0, 1.0);
281 vtkGetMacro(DistanceLODThreshold,
double);
288 vtkSetMacro(EnableViewAngleLOD,
int);
289 vtkGetMacro(EnableViewAngleLOD,
int);
296 vtkSetClampMacro(ViewAngleLODThreshold,
double, 0., 1.);
297 vtkGetMacro(ViewAngleLODThreshold,
double);
338 VTK_TITLE_BOTTOM = 0,
347 vtkSetClampMacro(RadialAxisTitleLocation,
int, VTK_TITLE_BOTTOM, VTK_TITLE_EXTERN);
348 vtkGetMacro(RadialAxisTitleLocation,
int);
356 vtkSetClampMacro(PolarAxisTitleLocation,
int, VTK_TITLE_BOTTOM, VTK_TITLE_EXTERN);
357 vtkGetMacro(PolarAxisTitleLocation,
int);
442 vtkSetMacro(ArcMajorTickSize,
double);
443 vtkGetMacro(ArcMajorTickSize,
double);
450 vtkSetMacro(PolarAxisMajorTickSize,
double);
451 vtkGetMacro(PolarAxisMajorTickSize,
double);
458 vtkSetMacro(LastRadialAxisMajorTickSize,
double);
459 vtkGetMacro(LastRadialAxisMajorTickSize,
double);
466 vtkSetMacro(PolarAxisTickRatioSize,
double);
467 vtkGetMacro(PolarAxisTickRatioSize,
double);
474 vtkSetMacro(LastAxisTickRatioSize,
double);
475 vtkGetMacro(LastAxisTickRatioSize,
double);
482 vtkSetMacro(ArcTickRatioSize,
double);
483 vtkGetMacro(ArcTickRatioSize,
double);
490 vtkSetMacro(PolarAxisMajorTickThickness,
double);
491 vtkGetMacro(PolarAxisMajorTickThickness,
double);
498 vtkSetMacro(LastRadialAxisMajorTickThickness,
double);
499 vtkGetMacro(LastRadialAxisMajorTickThickness,
double);
506 vtkSetMacro(ArcMajorTickThickness,
double);
507 vtkGetMacro(ArcMajorTickThickness,
double);
514 vtkSetMacro(PolarAxisTickRatioThickness,
double);
515 vtkGetMacro(PolarAxisTickRatioThickness,
double);
522 vtkSetMacro(LastAxisTickRatioThickness,
double);
523 vtkGetMacro(LastAxisTickRatioThickness,
double);
530 vtkSetMacro(ArcTickRatioThickness,
double);
531 vtkGetMacro(ArcTickRatioThickness,
double);
538 vtkSetMacro(DeltaRangeMajor,
double);
539 vtkGetMacro(DeltaRangeMajor,
double);
546 vtkSetMacro(DeltaRangeMinor,
double);
547 vtkGetMacro(DeltaRangeMinor,
double);
554 vtkSetMacro(DeltaAngleMajor,
double);
555 vtkGetMacro(DeltaAngleMajor,
double);
562 vtkSetMacro(DeltaAngleMinor,
double);
563 vtkGetMacro(DeltaAngleMinor,
double);
570 vtkSetMacro(DeltaAngleRadialAxes,
double);
571 vtkGetMacro(DeltaAngleRadialAxes,
double);
690 vtkSetVector6Macro(Bounds,
double);
693 double& xmin,
double& xmax,
double& ymin,
double& ymax,
double& zmin,
double& zmax);
701 vtkSetClampMacro(Ratio,
double, 0.001, 100.0);
702 vtkGetMacro(Ratio,
double);
768 double a,
double angleEllipseRad,
double tickSize,
vtkPoints* tickPts);
represents an object (geometry & properties) in a rendered scene
Create an axis with tick marks and labels.
a virtual camera for 3D rendering
a simple class to control print indentation
represent and manipulate 3D points
create an actor of a polar axes -
vtkActor * ArcTickActor
vtk object for arc Ticks
bool AutoScaleRadius
Auto-scale polar radius (with respect to average length scale of x-y bounding box).
virtual void SetCamera(vtkCamera *)
Set/Get the camera to perform scaling and translation of the vtkPolarAxesActor.
double * GetBounds() override
Explicitly specify the region in space around which to draw the bounds.
bool AutoSubdividePolarAxis
Whether the number of polar axis ticks and arcs should be automatically calculated.
virtual void SetPolarAxisProperty(vtkProperty *)
Get/Set polar axis actor properties.
vtkTypeBool PolarLabelVisibility
Visibility of polar axis and its title, labels, ticks (major only)
void CalculateBounds()
Calculate bounds based on maximum radius and angular sector.
vtkActor * PolarArcsActor
int RequestedNumberOfRadialAxes
Requested Number of radial axes.
void GetBounds(double bounds[6])
Explicitly specify the region in space around which to draw the bounds.
vtkTextProperty * PolarAxisTitleTextProperty
Text properties of polar axis title and labels.
void AutoScale(vtkViewport *viewport)
Automatically rescale titles and labels NB: Current implementation only for perspective projections.
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
virtual void SetNumberOfPolarAxisTicks(int)
Set/Get a number of ticks that one would like to display along polar axis NB: it modifies DeltaRangeM...
vtkTypeBool RadialAxesVisibility
Visibility of radial axes and their titles.
vtkTypeBool PolarArcsVisibility
Visibility of polar arcs.
vtkTypeBool PolarTickVisibility
Hold visibility for all present ticks.
vtkProperty * PolarAxisProperty
General properties of polar axis Behavior may be override by polar axis ticks 's actor property.
int EnableDistanceLOD
If enabled the actor will not be visible at a certain distance from the camera.
int EnableViewAngleLOD
If enabled the actor will not be visible at a certain view angle.
vtkPoints * ArcMajorTickPts
Keep the arc major ticks vtkPoints instances.
virtual void SetLastRadialAxisTextProperty(vtkTextProperty *p)
Set/Get the last radial axis text property.
void BuildPolarAxisLabelsArcs()
Build polar axis labels and arcs with respect to specified pole.
virtual void SetLastRadialAxisProperty(vtkProperty *p)
Get/Set last radial axis actor properties.
vtkTextProperty * PolarAxisLabelTextProperty
Text properties of polar axis title and labels.
virtual void SetSecondaryPolarArcsProperty(vtkProperty *p)
Get/Set secondary polar arcs actors property.
virtual void SetSecondaryRadialAxesProperty(vtkProperty *p)
Get/Set secondary radial axes actors properties.
double ArcMajorTickThickness
double DeltaAngleMinor
Angle between 2 minor ticks on the last arc.
void StoreTicksPtsFromParamEllipse(double a, double angleEllipseRad, double tickSize, vtkPoints *tickPts)
Init tick point located on an ellipse at angleEllipseRad angle and according to "a" major radius.
double MaximumRadius
Maximum polar radius.
virtual void SetMinimumRadius(double)
Set/Get the minimal radius of the polar coordinates.
virtual void ComputeDeltaAngleRadialAxes(vtkIdType)
Compute delta angle of radial axes.
double MinimumRadius
Minimum polar radius.
double MaximumAngle
Maximum polar angle Default: 90.
static vtkPolarAxesActor * New()
Instantiate object with label format "6.3g" and the number of labels per axis set to 3.
vtkPolyData * ArcMinorTickPolyData
vtk object for arc Ticks
void GetBounds(double &xmin, double &xmax, double &ymin, double &ymax, double &zmin, double &zmax)
Explicitly specify the region in space around which to draw the bounds.
double ArcTickRatioThickness
vtkProperty * SecondaryRadialAxesProperty
General properties of radial axes.
vtkTypeBool AxisMinorTickVisibility
void GetSignificantPartFromValues(vtkStringArray *valuesStr, std::list< double > &valuesList)
Yield a string array with the float part of each values.
int NumberOfRadialAxes
Number of radial axes.
int PolarAxisTitleLocation
Define the alignment of the title related to the polar axis.
char * PolarLabelFormat
Title to be used for the polar axis NB: Non-polar radial axes use the polar angle as title and have n...
vtkAxisActor * PolarAxis
Control variables for polar axis.
vtkTextProperty * SecondaryRadialAxesTextProperty
Text properties of secondary radial axes.
virtual void SetMinimumAngle(double)
Set/Get the minimum radius of the polar coordinates (in degrees).
vtkProperty * GetPolarArcsProperty()
Get/Set principal polar arc actor property.
double ViewAngleLODThreshold
This determines at what view angle to geometry will make the geometry not visible.
virtual void SetPole(double[3])
Explicitly specify the coordinate of the pole.
vtkPolyData * ArcTickPolyData
vtk object for arc Ticks
double DeltaAngleRadialAxes
Angle between 2 radial Axes.
void AutoComputeTicksProperties()
Set Range and PolarAxis members value to build axis ticks this function doesn't actually build PolarA...
vtkTypeBool RadialTitleVisibility
Visibility of radial axes and their titles.
void BuildLabelsLog()
Define label values.
bool RadialUnits
Display angle units (degrees) to label radial axes Default is true.
int TickLocation
Describes the tick orientation for the graph elements involved by this property.
void BuildArcTicks()
Build Arc ticks.
void BuildRadialAxes()
Build requested number of radial axes with respect to specified pole.
int GetUse2DMode()
Enable/Disable labels 2D mode (always facing the camera).
void CreateRadialAxes(int axisCount)
Create requested number of type X axes.
double FSign(double, double)
Convenience methods.
double ComputeIdealStep(int subDivsRequired, double rangeLength, int maxSubDivs=1000)
return a step attempting to be as rounded as possible according to input parameters
static double ComputeEllipseAngle(double angleInDegrees, double ratio)
convert section angle to an angle applied to ellipse equation.
virtual void SetPolarAxisTitleTextProperty(vtkTextProperty *p)
Set/Get the polar axis title text property.
bool CheckMembersConsistency()
Check consistency of vtkPolarAxesActor members.
int GetNumberOfPolarAxisTicks()
Set/Get a number of ticks that one would like to display along polar axis NB: it modifies DeltaRangeM...
int RadialAxesOriginToPolarAxis
If On, the radial axes are drawn from the angle of the polarAxis (i.e.
double DistanceLODThreshold
Default is 0.80 This determines at what fraction of camera far clip range, actor is not visible.
double DeltaAngleMajor
Angle between 2 major ticks on the last arc.
double DeltaRangeMinor
Step between 2 minor ticks, in range value (values displayed on the axis).
double DeltaRangeMajor
Step between 2 major ticks, in range value (values displayed on the axis).
vtkProperty * GetSecondaryPolarArcsProperty()
Get/Set secondary polar arcs actors property.
double TitleScale
Title scale factor.
int ArcTicksOriginToPolarAxis
If On, the ticks are drawn from the angle of the polarAxis (i.e.
vtkPolyDataMapper * ArcTickPolyDataMapper
vtk object for arc Ticks
void BuildPolarAxisLabelsArcsLog()
Build labels and arcs with log scale axis.
virtual void SetSecondaryRadialAxesTextProperty(vtkTextProperty *p)
Set/Get the secondary radial axes text property.
vtkPolyDataMapper * SecondaryPolarArcsMapper
Structures for secondary polar arcs.
double Ratio
Ratio for elliptical representation of the polar axes actor.
int RenderOverlay(vtkViewport *) override
Draw the polar axes.
vtkActor * SecondaryPolarArcsActor
Structures for secondary polar arcs.
vtkPolyDataMapper * ArcMinorTickPolyDataMapper
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...
void SetCommonAxisAttributes(vtkAxisActor *)
Send attributes which are common to all axes, both polar and radial.
vtkTypeBool PolarTitleVisibility
Visibility of polar axis and its title, labels, ticks (major only)
void SetUse2DMode(int val)
Enable/Disable labels 2D mode (always facing the camera).
vtkTypeBool ArcMinorTickVisibility
virtual void SetMaximumRadius(double)
Set/Get the maximum radius of the polar coordinates.
double FFix(double)
Convenience methods.
virtual void SetPole(double, double, double)
Explicitly specify the coordinate of the pole.
vtkTypeBool DrawPolarArcsGridlines
Visibility of the inner arcs (overridden to 0 if PolarArcsVisibility is set to 0)
int RenderOpaqueGeometry(vtkViewport *) override
Draw the polar axes.
void SetPolarAxisAttributes(vtkAxisActor *)
Set properties specific to PolarAxis.
vtkAxisActor ** RadialAxes
Control variables for non-polar radial axes.
double SmallestVisiblePolarAngle
Smallest radial angle distinguishable from polar axis.
void ReleaseGraphicsResources(vtkWindow *) override
Release any graphics resources that are being consumed by this actor.
double ScreenSize
Text screen size.
vtkPolyDataMapper * PolarArcsMapper
vtkTypeBool PolarAxisVisibility
Visibility of polar axis and its title, labels, ticks (major only)
int RadialAxisTitleLocation
Define the alignment of the title related to the radial axis.
std::string FindExponentAndAdjustValues(std::list< double > &valuesList)
Find a common exponent for label values.
virtual void SetMaximumAngle(double)
Set/Get the maximum radius of the polar coordinates (in degrees).
double LabelScale
Label scale factor.
int RenderTranslucentPolygonalGeometry(vtkViewport *) override
Draw the polar axes.
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)
vtkProperty * LastRadialAxisProperty
General properties of last radial axis.
vtkPolyData * SecondaryPolarArcs
Structures for secondary polar arcs.
double MinimumAngle
Minimum polar angle Default: 0.
~vtkPolarAxesActor() override
vtkPoints * ArcMinorTickPts
Keep the arc minor ticks vtkPoints instances.
virtual void SetPolarAxisLabelTextProperty(vtkTextProperty *p)
Set/Get the polar axis labels text property.
vtkTextProperty * LastRadialAxisTextProperty
Text properties of last radial axis.
vtkCamera * Camera
Camera attached to the polar axes system.
bool Log
Enable/Disable log scale Default: 0.
char * RadialAngleFormat
String to format angle values displayed on the radial axes.
void BuildAxes(vtkViewport *)
Build the axes.
virtual void SetPolarArcsProperty(vtkProperty *p)
Get/Set principal polar arc actor property.
map vtkPolyData to graphics primitives
concrete dataset represents vertices, lines, polygons, and triangle strips
represent surface properties of a geometric object
a vtkAbstractArray subclass for strings
represent text properties.
record modification and/or execution time
abstract specification for Viewports
window superclass for vtkRenderWindow
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.
#define VTK_MAXIMUM_NUMBER_OF_RADIAL_AXES