33#ifndef vtkPolarAxesActor_h
34#define vtkPolarAxesActor_h
40#include "vtkRenderingAnnotationModule.h"
45VTK_ABI_NAMESPACE_BEGIN
79 virtual void SetPole(
double,
double,
double);
80 vtkGetVector3Macro(Pole,
double);
88 vtkSetMacro(Log,
bool);
89 vtkGetMacro(Log,
bool);
90 vtkBooleanMacro(Log,
bool);
98 vtkSetClampMacro(RequestedNumberOfRadialAxes,
vtkIdType, 0, VTK_MAXIMUM_NUMBER_OF_RADIAL_AXES);
99 vtkGetMacro(RequestedNumberOfRadialAxes,
vtkIdType);
107 vtkSetClampMacro(RequestedNumberOfPolarAxes,
vtkIdType, 0, VTK_MAXIMUM_NUMBER_OF_POLAR_AXES);
117 vtkSetMacro(AutoSubdividePolarAxis,
bool);
119 vtkGetMacro(AutoSubdividePolarAxis,
bool);
120 void AutoSubdividePolarAxisOn();
121 void AutoSubdividePolarAxisOff();
130 virtual
void SetNumberOfPolarAxisTicks(
int);
131 int GetNumberOfPolarAxisTicks();
139 vtkSetVector2Macro(Range,
double);
140 vtkGetVectorMacro(Range,
double, 2);
148 virtual
void SetMinimumRadius(
double);
149 vtkGetMacro(MinimumRadius,
double);
157 virtual
void SetMaximumRadius(
double);
158 vtkGetMacro(MaximumRadius,
double);
166 virtual
void SetMinimumAngle(
double);
167 vtkGetMacro(MinimumAngle,
double);
175 virtual
void SetMaximumAngle(
double);
176 vtkGetMacro(MaximumAngle,
double);
185 vtkSetClampMacro(SmallestVisiblePolarAngle,
double, 0., 5.);
186 vtkGetMacro(SmallestVisiblePolarAngle,
double);
197 vtkGetMacro(TickLocation,
int);
204 vtkSetMacro(RadialUnits,
bool);
205 vtkGetMacro(RadialUnits,
bool);
215 vtkSetMacro(ScreenSize,
double);
216 vtkGetMacro(ScreenSize,
double);
225 vtkSetVector2Macro(PolarTitleOffset,
double);
226 vtkGetVectorMacro(PolarTitleOffset,
double, 2);
235 vtkSetVector2Macro(RadialTitleOffset,
double);
236 vtkGetVectorMacro(RadialTitleOffset,
double, 2);
244 vtkGetMacro(PolarLabelOffset,
double);
245 vtkSetMacro(PolarLabelOffset,
double);
253 vtkGetMacro(PolarExponentOffset,
double);
254 vtkSetMacro(PolarExponentOffset,
double);
271 vtkSetStringMacro(PolarAxisTitle);
272 vtkGetStringMacro(PolarAxisTitle);
279 vtkSetStringMacro(PolarLabelFormat);
280 vtkGetStringMacro(PolarLabelFormat);
285 VTK_EXPONENT_BOTTOM = 0,
286 VTK_EXPONENT_EXTERN = 1,
287 VTK_EXPONENT_LABELS = 2
304 vtkSetStringMacro(RadialAngleFormat);
305 vtkGetStringMacro(RadialAngleFormat);
320 vtkSetMacro(EnableDistanceLOD,
bool);
321 vtkGetMacro(EnableDistanceLOD,
bool);
329 vtkSetClampMacro(DistanceLODThreshold,
double, 0.0, 1.0);
330 vtkGetMacro(DistanceLODThreshold,
double);
338 vtkSetMacro(EnableViewAngleLOD,
bool);
339 vtkGetMacro(EnableViewAngleLOD,
bool);
347 vtkSetClampMacro(ViewAngleLODThreshold,
double, 0., 1.);
348 vtkGetMacro(ViewAngleLODThreshold,
double);
356 vtkSetMacro(PolarAxisVisibility,
bool);
357 vtkGetMacro(PolarAxisVisibility,
bool);
358 vtkBooleanMacro(PolarAxisVisibility,
bool);
366 vtkSetMacro(DrawRadialGridlines,
bool);
367 vtkGetMacro(DrawRadialGridlines,
bool);
368 vtkBooleanMacro(DrawRadialGridlines,
bool);
376 vtkSetMacro(DrawPolarArcsGridlines,
bool);
377 vtkGetMacro(DrawPolarArcsGridlines,
bool);
378 vtkBooleanMacro(DrawPolarArcsGridlines,
bool);
386 vtkSetMacro(PolarTitleVisibility,
bool);
387 vtkGetMacro(PolarTitleVisibility,
bool);
388 vtkBooleanMacro(PolarTitleVisibility,
bool);
393 VTK_TITLE_BOTTOM = 0,
403 vtkSetClampMacro(RadialAxisTitleLocation,
int, VTK_TITLE_BOTTOM, VTK_TITLE_EXTERN);
404 vtkGetMacro(RadialAxisTitleLocation,
int);
413 vtkSetClampMacro(PolarAxisTitleLocation,
int, VTK_TITLE_BOTTOM, VTK_TITLE_EXTERN);
414 vtkGetMacro(PolarAxisTitleLocation,
int);
422 vtkSetMacro(PolarLabelVisibility,
bool);
423 vtkGetMacro(PolarLabelVisibility,
bool);
424 vtkBooleanMacro(PolarLabelVisibility,
bool);
434 vtkSetMacro(ArcTicksOriginToPolarAxis,
bool);
435 vtkGetMacro(ArcTicksOriginToPolarAxis,
bool);
436 vtkBooleanMacro(ArcTicksOriginToPolarAxis,
bool);
446 vtkSetMacro(RadialAxesOriginToPolarAxis,
bool);
447 vtkGetMacro(RadialAxesOriginToPolarAxis,
bool);
448 vtkBooleanMacro(RadialAxesOriginToPolarAxis,
bool);
456 vtkSetMacro(PolarTickVisibility,
bool);
457 vtkGetMacro(PolarTickVisibility,
bool);
458 vtkBooleanMacro(PolarTickVisibility,
bool);
466 vtkSetMacro(AxisTickVisibility,
bool);
467 vtkGetMacro(AxisTickVisibility,
bool);
468 vtkBooleanMacro(AxisTickVisibility,
bool);
476 vtkSetMacro(AxisMinorTickVisibility,
bool);
477 vtkGetMacro(AxisMinorTickVisibility,
bool);
478 vtkBooleanMacro(AxisMinorTickVisibility,
bool);
486 vtkSetMacro(AxisTickMatchesPolarAxes,
bool);
487 vtkGetMacro(AxisTickMatchesPolarAxes,
bool);
488 vtkBooleanMacro(AxisTickMatchesPolarAxes,
bool);
496 vtkSetMacro(ArcTickVisibility,
bool);
497 vtkGetMacro(ArcTickVisibility,
bool);
498 vtkBooleanMacro(ArcTickVisibility,
bool);
506 vtkSetMacro(ArcMinorTickVisibility,
bool);
507 vtkGetMacro(ArcMinorTickVisibility,
bool);
508 vtkBooleanMacro(ArcMinorTickVisibility,
bool);
516 vtkSetMacro(ArcTickMatchesRadialAxes,
bool);
517 vtkGetMacro(ArcTickMatchesRadialAxes,
bool);
518 vtkBooleanMacro(ArcTickMatchesRadialAxes,
bool);
527 vtkSetMacro(ArcMajorTickSize,
double);
528 vtkGetMacro(ArcMajorTickSize,
double);
537 vtkSetMacro(PolarAxisMajorTickSize,
double);
538 vtkGetMacro(PolarAxisMajorTickSize,
double);
547 vtkSetMacro(LastRadialAxisMajorTickSize,
double);
548 vtkGetMacro(LastRadialAxisMajorTickSize,
double);
556 vtkSetMacro(PolarAxisTickRatioSize,
double);
557 vtkGetMacro(PolarAxisTickRatioSize,
double);
565 vtkSetMacro(LastAxisTickRatioSize,
double);
566 vtkGetMacro(LastAxisTickRatioSize,
double);
574 vtkSetMacro(ArcTickRatioSize,
double);
575 vtkGetMacro(ArcTickRatioSize,
double);
583 vtkSetMacro(TickRatioRadiusSize,
double);
584 vtkGetMacro(TickRatioRadiusSize,
double);
592 vtkSetMacro(PolarAxisMajorTickThickness,
double);
593 vtkGetMacro(PolarAxisMajorTickThickness,
double);
601 vtkSetMacro(LastRadialAxisMajorTickThickness,
double);
602 vtkGetMacro(LastRadialAxisMajorTickThickness,
double);
610 vtkSetMacro(ArcMajorTickThickness,
double);
611 vtkGetMacro(ArcMajorTickThickness,
double);
619 vtkSetMacro(PolarAxisTickRatioThickness,
double);
620 vtkGetMacro(PolarAxisTickRatioThickness,
double);
628 vtkSetMacro(LastAxisTickRatioThickness,
double);
629 vtkGetMacro(LastAxisTickRatioThickness,
double);
637 vtkSetMacro(ArcTickRatioThickness,
double);
638 vtkGetMacro(ArcTickRatioThickness,
double);
646 vtkSetMacro(DeltaRangeMajor,
double);
647 vtkGetMacro(DeltaRangeMajor,
double);
655 vtkSetMacro(DeltaRangeMinor,
double);
656 vtkGetMacro(DeltaRangeMinor,
double);
665 vtkSetMacro(RequestedDeltaRangePolarAxes,
double);
666 vtkGetMacro(RequestedDeltaRangePolarAxes,
double);
674 vtkSetMacro(DeltaAngleMajor,
double);
675 vtkGetMacro(DeltaAngleMajor,
double);
683 vtkSetMacro(DeltaAngleMinor,
double);
684 vtkGetMacro(DeltaAngleMinor,
double);
693 vtkSetMacro(RequestedDeltaAngleRadialAxes,
double);
694 vtkGetMacro(RequestedDeltaAngleRadialAxes,
double);
704 vtkSetMacro(RadialAxesVisibility,
bool);
705 vtkGetMacro(RadialAxesVisibility,
bool);
706 vtkBooleanMacro(RadialAxesVisibility,
bool);
714 vtkSetMacro(RadialTitleVisibility,
bool);
715 vtkGetMacro(RadialTitleVisibility,
bool);
716 vtkBooleanMacro(RadialTitleVisibility,
bool);
724 vtkSetMacro(PolarArcsVisibility,
bool);
725 vtkGetMacro(PolarArcsVisibility,
bool);
726 vtkBooleanMacro(PolarArcsVisibility,
bool);
817 vtkSetVector6Macro(Bounds,
double);
820 double& xmin,
double& xmax,
double& ymin,
double& ymax,
double& zmin,
double& zmax);
829 vtkSetClampMacro(Ratio,
double, 0.001, 100.0);
830 vtkGetMacro(Ratio,
double);
838 vtkSetClampMacro(PolarArcResolutionPerDegree,
double, VTK_MINIMUM_POLAR_ARC_RESOLUTION_PER_DEG,
839 VTK_MAXIMUM_POLAR_ARC_RESOLUTION_PER_DEG);
840 vtkGetMacro(PolarArcResolutionPerDegree,
double);
892 void AutoComputeTicksProperties();
897 double ComputeIdealStep(
int subDivsRequired,
double rangeLength,
int maxSubDivs = 1000);
902 void BuildArcTicks();
908 void StoreTicksPtsFromParamEllipse(
909 double a,
double angleEllipseRad,
double tickSize,
vtkPoints* tickPts);
914 void BuildPolarAxisLabelsArcs();
919 void BuildPolarAxisLabelsArcsLog();
924 void BuildLabelsLog();
926 void BuildPolarArcsLog();
931 std::
string FindExponentAndAdjustValues(
std::list<
double>& valuesList);
943 double FSign(
double,
double);
956 static
double ComputeEllipseAngle(
double angleInDegrees,
double ratio);
970 double Pole[3] = { 0.0, 0.0, 0.0 };
975 int NumberOfRadialAxes = 0;
981 int RequestedNumberOfRadialAxes = 0;
986 int NumberOfPolarAxes = 5;
992 int RequestedNumberOfPolarAxes = 5;
1002 double PolarArcResolutionPerDegree = 0.2;
1007 double Range[2] = { 0.0, 10.0 };
1012 double DeltaRangeMinor = 0.5;
1017 double DeltaRangeMajor = 1.0;
1022 bool AutoSubdividePolarAxis =
false;
1027 double DeltaRangePolarAxes = 0.0;
1033 double RequestedDeltaRangePolarAxes = 0.0;
1038 double DeltaAngleMinor = 22.5;
1043 double DeltaAngleMajor = 45.0;
1048 double DeltaAngleRadialAxes = 45.0;
1054 double RequestedDeltaAngleRadialAxes = 45.0;
1059 double MinimumRadius = 0.0;
1064 double MaximumRadius = 1.0;
1074 double MinimumAngle = 0.0;
1079 double MaximumAngle = 90.0;
1084 double SmallestVisiblePolarAngle = 0.5;
1120 char* PolarAxisTitle =
nullptr;
1121 char* PolarLabelFormat =
nullptr;
1127 char* RadialAngleFormat =
nullptr;
1132 bool RadialUnits =
true;
1137 bool EnableDistanceLOD =
true;
1142 double DistanceLODThreshold = 0.7;
1147 bool EnableViewAngleLOD =
true;
1153 double ViewAngleLODThreshold = 0.3;
1159 bool PolarAxisVisibility =
true;
1160 bool PolarTitleVisibility =
true;
1161 bool PolarLabelVisibility =
true;
1176 bool PolarTickVisibility =
true;
1184 bool ArcTicksOriginToPolarAxis =
true;
1192 bool RadialAxesOriginToPolarAxis =
true;
1197 bool AxisTickVisibility =
true, AxisMinorTickVisibility =
false;
1202 bool AxisTickMatchesPolarAxes =
true;
1207 bool ArcTickVisibility =
true, ArcMinorTickVisibility =
false;
1212 bool ArcTickMatchesRadialAxes =
true;
1217 double PolarAxisMajorTickSize = 0.0, LastRadialAxisMajorTickSize = 0.0, ArcMajorTickSize = 0.0;
1222 double PolarAxisTickRatioSize = 0.3, LastAxisTickRatioSize = 0.3, ArcTickRatioSize = 0.3;
1227 double TickRatioRadiusSize = 0.02;
1232 double PolarAxisMajorTickThickness = 1.0, LastRadialAxisMajorTickThickness = 1.0,
1233 ArcMajorTickThickness = 1.0;
1238 double PolarAxisTickRatioThickness = 0.5, LastAxisTickRatioThickness = 0.5,
1239 ArcTickRatioThickness = 0.5;
1245 bool RadialAxesVisibility =
true;
1246 bool RadialTitleVisibility =
true;
1252 int RadialAxisTitleLocation = VTK_TITLE_BOTTOM;
1257 int PolarAxisTitleLocation = VTK_TITLE_BOTTOM;
1268 bool PolarArcsVisibility =
true;
1273 bool DrawRadialGridlines =
true;
1278 bool DrawPolarArcsGridlines =
true;
1341 double TitleScale = -1.0;
1346 double LabelScale = -1.0;
1351 double ScreenSize = 10.0;
1357 double PolarTitleOffset[2] = { 20.0, 10.0 }, RadialTitleOffset[2] = { 20.0, 0.0 };
1358 double PolarLabelOffset = 10.0, PolarExponentOffset = 5.0;
1362 static constexpr int VTK_MAXIMUM_NUMBER_OF_POLAR_AXES = 20;
1363 static constexpr int VTK_MAXIMUM_NUMBER_OF_RADIAL_AXES = 50;
1364 static constexpr double VTK_MINIMUM_POLAR_ARC_RESOLUTION_PER_DEG = 0.05;
1365 static constexpr double VTK_MAXIMUM_POLAR_ARC_RESOLUTION_PER_DEG = 100.0;
1371VTK_ABI_NAMESPACE_END
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
Allocate and hold a VTK object.
represent and manipulate 3D points
create an actor of a polar axes -
vtkSmartPointer< vtkCamera > Camera
Camera attached to the polar axes system.
vtkProperty * GetLastRadialAxisProperty()
Get/Set last radial axis actor properties.
double * GetBounds() override
Explicitly specify the region in space around which to draw the bounds.
vtkTextProperty * GetLastRadialAxisTextProperty()
Set/Get the last radial axis text property.
vtkNew< vtkPoints > ArcMinorTickPts
Keep the arc minor ticks vtkPoints instances.
virtual void SetPolarAxisProperty(vtkProperty *)
Get/Set polar axis actor properties.
void CalculateBounds()
Calculate bounds based on maximum radius and angular sector.
vtkTextProperty * GetSecondaryRadialAxesTextProperty()
Set/Get the secondary radial axes text property.
vtkSmartPointer< vtkTextProperty > PolarAxisTitleTextProperty
Text properties of polar axis title and labels.
void GetBounds(double bounds[6])
Explicitly specify the region in space around which to draw the bounds.
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
vtkSmartPointer< vtkProperty > PolarAxisProperty
General properties of polar axis Behavior may be override by polar axis ticks 's actor property.
vtkNew< vtkAxisActor > PolarAxis
Control variables for polar axis.
bool GetUse2DMode()
Enable/Disable labels 2D mode (always facing the camera).
vtkNew< vtkActor > ArcTickActor
vtk object for arc Ticks
virtual void SetLastRadialAxisTextProperty(vtkTextProperty *p)
Set/Get the last radial axis text property.
virtual void SetLastRadialAxisProperty(vtkProperty *p)
Get/Set last radial axis actor properties.
virtual void SetSecondaryPolarArcsProperty(vtkProperty *p)
Get/Set secondary polar arcs actors property.
vtkNew< vtkPolyData > SecondaryPolarArcs
Structures for secondary polar arcs.
virtual void SetSecondaryRadialAxesProperty(vtkProperty *p)
Get/Set secondary radial axes actors properties.
vtkTextProperty * GetPolarAxisTitleTextProperty()
Set/Get the polar axis title text property.
vtkSmartPointer< vtkTextProperty > SecondaryRadialAxesTextProperty
Text properties of secondary radial axes.
static vtkPolarAxesActor * New()
Instantiate object with label format "6.3g" and the number of labels per axis set to 3.
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.
vtkSmartPointer< vtkProperty > LastRadialAxisProperty
General properties of last radial axis.
vtkNew< vtkPolyDataMapper > ArcTickPolyDataMapper
vtk object for arc Ticks
vtkProperty * GetPolarArcsProperty()
Get/Set principal polar arc actor property.
virtual void SetPole(double[3])
Explicitly specify the coordinate of the pole.
vtkNew< vtkActor > PolarArcsActor
vtkNew< vtkPolyData > ArcTickPolyData
vtk object for arc Ticks
void CreateRadialAxes(int axisCount)
Create requested number of type X axes.
vtkSmartPointer< vtkTextProperty > LastRadialAxisTextProperty
Text properties of last radial axis.
vtkNew< vtkPolyData > PolarArcs
void BuildRadialAxes(vtkViewport *viewport=nullptr)
Build requested number of radial axes with respect to specified pole.
virtual void SetPolarAxisTitleTextProperty(vtkTextProperty *p)
Set/Get the polar axis title text property.
vtkNew< vtkPoints > ArcMajorTickPts
Keep the arc major ticks vtkPoints instances.
bool CheckMembersConsistency()
Check consistency of vtkPolarAxesActor members.
vtkProperty * GetSecondaryPolarArcsProperty()
Get/Set secondary polar arcs actors property.
vtkSmartPointer< vtkTextProperty > PolarAxisLabelTextProperty
Text properties of polar axis title and labels.
virtual void SetSecondaryRadialAxesTextProperty(vtkTextProperty *p)
Set/Get the secondary radial axes text property.
int RenderOverlay(vtkViewport *) override
Draw the polar axes.
vtkSmartPointer< vtkProperty > SecondaryRadialAxesProperty
General properties of radial axes.
vtkNew< vtkPolyData > ArcMinorTickPolyData
vtk object for arc Ticks
void SetCommonAxisAttributes(vtkAxisActor *)
Send attributes which are common to all axes, both polar and radial.
vtkProperty * GetSecondaryRadialAxesProperty()
Get/Set secondary radial axes actors properties.
vtkNew< vtkActor > ArcMinorTickActor
vtk object for arc Ticks
virtual void SetPole(double, double, double)
Explicitly specify the coordinate of the pole.
void SetUse2DMode(bool enable)
Enable/Disable labels 2D mode (always facing the camera).
int RenderOpaqueGeometry(vtkViewport *) override
Draw the polar axes.
void SetPolarAxisAttributes(vtkAxisActor *)
Set properties specific to PolarAxis.
void ReleaseGraphicsResources(vtkWindow *) override
Release any graphics resources that are being consumed by this actor.
vtkNew< vtkPolyDataMapper > PolarArcsMapper
vtkTextProperty * GetPolarAxisLabelTextProperty()
Set/Get the polar axis labels text property.
int RenderTranslucentPolygonalGeometry(vtkViewport *) override
Draw the polar axes.
~vtkPolarAxesActor() override
vtkNew< vtkPolyDataMapper > ArcMinorTickPolyDataMapper
vtk object for arc Ticks
virtual void SetPolarAxisLabelTextProperty(vtkTextProperty *p)
Set/Get the polar axis labels text property.
vtkNew< vtkActor > SecondaryPolarArcsActor
Structures for secondary polar arcs.
vtkNew< vtkPolyDataMapper > SecondaryPolarArcsMapper
Structures for secondary polar arcs.
vtkProperty * GetPolarAxisProperty()
Get/Set polar axis actor properties.
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
Hold a reference to a vtkObjectBase instance.
a vtkAbstractArray subclass for strings
represent text properties.
record modification and/or execution time
abstract specification for Viewports
window superclass for vtkRenderWindow
#define VTK_DEPRECATED_IN_9_3_0(reason)