24 #ifndef vtkPolarAxesActor_h
25 #define vtkPolarAxesActor_h
30 #include "vtkRenderingAnnotationModule.h"
37 VTK_ABI_NAMESPACE_BEGIN
75 virtual void SetPole(
double[3]);
76 virtual void SetPole(
double,
double,
double);
77 vtkGetVector3Macro(Pole,
double);
85 vtkSetMacro(Log,
bool);
86 vtkGetMacro(Log,
bool);
87 vtkBooleanMacro(Log,
bool);
95 vtkSetClampMacro(RequestedNumberOfRadialAxes,
vtkIdType, 0, VTK_MAXIMUM_NUMBER_OF_RADIAL_AXES);
96 vtkGetMacro(RequestedNumberOfRadialAxes,
vtkIdType);
104 vtkSetClampMacro(RequestedNumberOfPolarAxes,
vtkIdType, 0, VTK_MAXIMUM_NUMBER_OF_POLAR_AXES);
105 vtkGetMacro(RequestedNumberOfPolarAxes,
vtkIdType);
113 vtkSetVector2Macro(
Range,
double);
114 vtkGetVectorMacro(
Range,
double, 2);
122 virtual void SetMinimumRadius(
double);
123 vtkGetMacro(MinimumRadius,
double);
131 virtual void SetMaximumRadius(
double);
132 vtkGetMacro(MaximumRadius,
double);
140 virtual void SetMinimumAngle(
double);
141 vtkGetMacro(MinimumAngle,
double);
149 virtual void SetMaximumAngle(
double);
150 vtkGetMacro(MaximumAngle,
double);
159 vtkSetClampMacro(SmallestVisiblePolarAngle,
double, 0., 5.);
160 vtkGetMacro(SmallestVisiblePolarAngle,
double);
171 vtkGetMacro(TickLocation,
int);
178 vtkSetMacro(RadialUnits,
bool);
179 vtkGetMacro(RadialUnits,
bool);
189 vtkSetMacro(ScreenSize,
double);
190 vtkGetMacro(ScreenSize,
double);
199 vtkSetVector2Macro(PolarTitleOffset,
double);
200 vtkGetVectorMacro(PolarTitleOffset,
double, 2);
209 vtkSetVector2Macro(RadialTitleOffset,
double);
210 vtkGetVectorMacro(RadialTitleOffset,
double, 2);
218 vtkGetMacro(PolarLabelOffset,
double);
219 vtkSetMacro(PolarLabelOffset,
double);
227 vtkGetMacro(PolarExponentOffset,
double);
228 vtkSetMacro(PolarExponentOffset,
double);
253 vtkSetStringMacro(PolarLabelFormat);
254 vtkGetStringMacro(PolarLabelFormat);
259 VTK_EXPONENT_BOTTOM = 0,
260 VTK_EXPONENT_EXTERN = 1,
261 VTK_EXPONENT_LABELS = 2
270 vtkSetClampMacro(ExponentLocation,
int, VTK_EXPONENT_BOTTOM, VTK_EXPONENT_LABELS);
271 vtkGetMacro(ExponentLocation,
int);
279 vtkSetStringMacro(RadialAngleFormat);
280 vtkGetStringMacro(RadialAngleFormat);
295 vtkSetMacro(EnableDistanceLOD,
bool);
296 vtkGetMacro(EnableDistanceLOD,
bool);
304 vtkSetClampMacro(DistanceLODThreshold,
double, 0.0, 1.0);
305 vtkGetMacro(DistanceLODThreshold,
double);
313 vtkSetMacro(EnableViewAngleLOD,
bool);
314 vtkGetMacro(EnableViewAngleLOD,
bool);
322 vtkSetClampMacro(ViewAngleLODThreshold,
double, 0., 1.);
323 vtkGetMacro(ViewAngleLODThreshold,
double);
331 vtkSetMacro(PolarAxisVisibility,
bool);
332 vtkGetMacro(PolarAxisVisibility,
bool);
333 vtkBooleanMacro(PolarAxisVisibility,
bool);
341 vtkSetMacro(DrawRadialGridlines,
bool);
342 vtkGetMacro(DrawRadialGridlines,
bool);
343 vtkBooleanMacro(DrawRadialGridlines,
bool);
351 vtkSetMacro(DrawPolarArcsGridlines,
bool);
352 vtkGetMacro(DrawPolarArcsGridlines,
bool);
353 vtkBooleanMacro(DrawPolarArcsGridlines,
bool);
361 vtkSetMacro(PolarTitleVisibility,
bool);
362 vtkGetMacro(PolarTitleVisibility,
bool);
363 vtkBooleanMacro(PolarTitleVisibility,
bool);
368 VTK_TITLE_BOTTOM = 0,
378 vtkSetClampMacro(RadialAxisTitleLocation,
int, VTK_TITLE_BOTTOM, VTK_TITLE_EXTERN);
379 vtkGetMacro(RadialAxisTitleLocation,
int);
388 vtkSetClampMacro(PolarAxisTitleLocation,
int, VTK_TITLE_BOTTOM, VTK_TITLE_EXTERN);
389 vtkGetMacro(PolarAxisTitleLocation,
int);
397 vtkSetMacro(PolarLabelVisibility,
bool);
398 vtkGetMacro(PolarLabelVisibility,
bool);
399 vtkBooleanMacro(PolarLabelVisibility,
bool);
409 vtkSetMacro(ArcTicksOriginToPolarAxis,
bool);
410 vtkGetMacro(ArcTicksOriginToPolarAxis,
bool);
411 vtkBooleanMacro(ArcTicksOriginToPolarAxis,
bool);
421 vtkSetMacro(RadialAxesOriginToPolarAxis,
bool);
422 vtkGetMacro(RadialAxesOriginToPolarAxis,
bool);
423 vtkBooleanMacro(RadialAxesOriginToPolarAxis,
bool);
431 vtkSetMacro(PolarTickVisibility,
bool);
432 vtkGetMacro(PolarTickVisibility,
bool);
433 vtkBooleanMacro(PolarTickVisibility,
bool);
441 vtkSetMacro(AxisTickVisibility,
bool);
442 vtkGetMacro(AxisTickVisibility,
bool);
443 vtkBooleanMacro(AxisTickVisibility,
bool);
451 vtkSetMacro(AxisMinorTickVisibility,
bool);
452 vtkGetMacro(AxisMinorTickVisibility,
bool);
453 vtkBooleanMacro(AxisMinorTickVisibility,
bool);
461 vtkSetMacro(AxisTickMatchesPolarAxes,
bool);
462 vtkGetMacro(AxisTickMatchesPolarAxes,
bool);
463 vtkBooleanMacro(AxisTickMatchesPolarAxes,
bool);
471 vtkSetMacro(ArcTickVisibility,
bool);
472 vtkGetMacro(ArcTickVisibility,
bool);
473 vtkBooleanMacro(ArcTickVisibility,
bool);
481 vtkSetMacro(ArcMinorTickVisibility,
bool);
482 vtkGetMacro(ArcMinorTickVisibility,
bool);
483 vtkBooleanMacro(ArcMinorTickVisibility,
bool);
491 vtkSetMacro(ArcTickMatchesRadialAxes,
bool);
492 vtkGetMacro(ArcTickMatchesRadialAxes,
bool);
493 vtkBooleanMacro(ArcTickMatchesRadialAxes,
bool);
502 vtkSetMacro(ArcMajorTickSize,
double);
503 vtkGetMacro(ArcMajorTickSize,
double);
512 vtkSetMacro(PolarAxisMajorTickSize,
double);
513 vtkGetMacro(PolarAxisMajorTickSize,
double);
522 vtkSetMacro(LastRadialAxisMajorTickSize,
double);
523 vtkGetMacro(LastRadialAxisMajorTickSize,
double);
531 vtkSetMacro(PolarAxisTickRatioSize,
double);
532 vtkGetMacro(PolarAxisTickRatioSize,
double);
540 vtkSetMacro(LastAxisTickRatioSize,
double);
541 vtkGetMacro(LastAxisTickRatioSize,
double);
549 vtkSetMacro(ArcTickRatioSize,
double);
550 vtkGetMacro(ArcTickRatioSize,
double);
558 vtkSetMacro(TickRatioRadiusSize,
double);
559 vtkGetMacro(TickRatioRadiusSize,
double);
567 vtkSetMacro(PolarAxisMajorTickThickness,
double);
568 vtkGetMacro(PolarAxisMajorTickThickness,
double);
576 vtkSetMacro(LastRadialAxisMajorTickThickness,
double);
577 vtkGetMacro(LastRadialAxisMajorTickThickness,
double);
585 vtkSetMacro(ArcMajorTickThickness,
double);
586 vtkGetMacro(ArcMajorTickThickness,
double);
594 vtkSetMacro(PolarAxisTickRatioThickness,
double);
595 vtkGetMacro(PolarAxisTickRatioThickness,
double);
603 vtkSetMacro(LastAxisTickRatioThickness,
double);
604 vtkGetMacro(LastAxisTickRatioThickness,
double);
612 vtkSetMacro(ArcTickRatioThickness,
double);
613 vtkGetMacro(ArcTickRatioThickness,
double);
621 vtkSetMacro(DeltaRangeMajor,
double);
622 vtkGetMacro(DeltaRangeMajor,
double);
630 vtkSetMacro(DeltaRangeMinor,
double);
631 vtkGetMacro(DeltaRangeMinor,
double);
640 vtkSetMacro(RequestedDeltaRangePolarAxes,
double);
641 vtkGetMacro(RequestedDeltaRangePolarAxes,
double);
649 vtkSetMacro(DeltaAngleMajor,
double);
650 vtkGetMacro(DeltaAngleMajor,
double);
658 vtkSetMacro(DeltaAngleMinor,
double);
659 vtkGetMacro(DeltaAngleMinor,
double);
668 vtkSetMacro(RequestedDeltaAngleRadialAxes,
double);
669 vtkGetMacro(RequestedDeltaAngleRadialAxes,
double);
679 vtkSetMacro(RadialAxesVisibility,
bool);
680 vtkGetMacro(RadialAxesVisibility,
bool);
681 vtkBooleanMacro(RadialAxesVisibility,
bool);
689 vtkSetMacro(RadialTitleVisibility,
bool);
690 vtkGetMacro(RadialTitleVisibility,
bool);
691 vtkBooleanMacro(RadialTitleVisibility,
bool);
699 vtkSetMacro(PolarArcsVisibility,
bool);
700 vtkGetMacro(PolarArcsVisibility,
bool);
701 vtkBooleanMacro(PolarArcsVisibility,
bool);
708 void SetUse2DMode(
bool enable);
717 void SetUseTextActor3D(
bool enable);
763 virtual void SetLastRadialAxisProperty(
vtkProperty* p);
771 virtual void SetSecondaryRadialAxesProperty(
vtkProperty* p);
787 virtual void SetSecondaryPolarArcsProperty(
vtkProperty* p);
799 vtkSetVector6Macro(Bounds,
double);
802 double& xmin,
double& xmax,
double& ymin,
double& ymax,
double& zmin,
double& zmax);
814 vtkSetClampMacro(Ratio,
double, 0.001, 100.0);
815 vtkGetMacro(Ratio,
double);
823 vtkSetClampMacro(PolarArcResolutionPerDegree,
double, VTK_MINIMUM_POLAR_ARC_RESOLUTION_PER_DEG,
824 VTK_MAXIMUM_POLAR_ARC_RESOLUTION_PER_DEG);
825 vtkGetMacro(PolarArcResolutionPerDegree,
double);
835 bool CheckMembersConsistency();
846 void CalculateBounds();
861 void CreateRadialAxes(
int axisCount);
868 void BuildRadialAxes(
vtkViewport* viewport =
nullptr);
873 double ComputeIdealStep(
int subDivsRequired,
double rangeLength,
int maxSubDivs = 1000);
878 void BuildArcTicks();
884 void StoreTicksPtsFromParamEllipse(
885 double a,
double angleEllipseRad,
double tickSize,
vtkPoints* tickPts);
890 void BuildPolarAxisLabelsArcs();
895 void BuildPolarAxisLabelsArcsLog();
900 void BuildLabelsLog();
902 void BuildPolarArcsLog();
907 std::string FindExponentAndAdjustValues(std::list<double>& valuesList);
912 void GetSignificantPartFromValues(
vtkStringArray* valuesStr, std::list<double>& valuesList);
919 double FSign(
double,
double);
932 static double ComputeEllipseAngle(
double angleInDegrees,
double ratio);
937 virtual void ComputeDeltaRangePolarAxes(
vtkIdType);
942 virtual void ComputeDeltaAngleRadialAxes(
vtkIdType);
948 double Pole[3] = { 0.0, 0.0, 0.0 };
953 int NumberOfRadialAxes = 0;
959 int RequestedNumberOfRadialAxes = 0;
964 int NumberOfPolarAxes = 5;
970 int RequestedNumberOfPolarAxes = 5;
980 double PolarArcResolutionPerDegree = 0.2;
985 double Range[2] = { 0.0, 10.0 };
990 double DeltaRangeMinor = 0.5;
995 double DeltaRangeMajor = 1.0;
1000 double DeltaRangePolarAxes = 0.0;
1006 double RequestedDeltaRangePolarAxes = 0.0;
1011 double DeltaAngleMinor = 22.5;
1016 double DeltaAngleMajor = 45.0;
1021 double DeltaAngleRadialAxes = 45.0;
1027 double RequestedDeltaAngleRadialAxes = 45.0;
1032 double MinimumRadius = 0.0;
1037 double MaximumRadius = 1.0;
1047 double MinimumAngle = 0.0;
1052 double MaximumAngle = 90.0;
1057 double SmallestVisiblePolarAngle = 0.5;
1086 std::vector<vtkSmartPointer<vtkAxisActor>> RadialAxes;
1094 char* PolarLabelFormat =
nullptr;
1100 char* RadialAngleFormat =
nullptr;
1105 bool RadialUnits =
true;
1110 bool EnableDistanceLOD =
true;
1115 double DistanceLODThreshold = 0.7;
1120 bool EnableViewAngleLOD =
true;
1126 double ViewAngleLODThreshold = 0.3;
1132 bool PolarAxisVisibility =
true;
1133 bool PolarTitleVisibility =
true;
1134 bool PolarLabelVisibility =
true;
1149 bool PolarTickVisibility =
true;
1157 bool ArcTicksOriginToPolarAxis =
true;
1165 bool RadialAxesOriginToPolarAxis =
true;
1170 bool AxisTickVisibility =
true, AxisMinorTickVisibility =
false;
1175 bool AxisTickMatchesPolarAxes =
true;
1180 bool ArcTickVisibility =
true, ArcMinorTickVisibility =
false;
1185 bool ArcTickMatchesRadialAxes =
true;
1190 double PolarAxisMajorTickSize = 0.0, LastRadialAxisMajorTickSize = 0.0, ArcMajorTickSize = 0.0;
1195 double PolarAxisTickRatioSize = 0.3, LastAxisTickRatioSize = 0.3, ArcTickRatioSize = 0.3;
1200 double TickRatioRadiusSize = 0.02;
1205 double PolarAxisMajorTickThickness = 1.0, LastRadialAxisMajorTickThickness = 1.0,
1206 ArcMajorTickThickness = 1.0;
1211 double PolarAxisTickRatioThickness = 0.5, LastAxisTickRatioThickness = 0.5,
1212 ArcTickRatioThickness = 0.5;
1218 bool RadialAxesVisibility =
true;
1219 bool RadialTitleVisibility =
true;
1225 int RadialAxisTitleLocation = VTK_TITLE_BOTTOM;
1230 int PolarAxisTitleLocation = VTK_TITLE_BOTTOM;
1236 int ExponentLocation = VTK_EXPONENT_LABELS;
1241 bool PolarArcsVisibility =
true;
1246 bool DrawRadialGridlines =
true;
1251 bool DrawPolarArcsGridlines =
true;
1314 double ScreenSize = 10.0;
1320 double PolarTitleOffset[2] = { 20.0, 10.0 }, RadialTitleOffset[2] = { 20.0, 0.0 };
1321 double PolarLabelOffset = 10.0, PolarExponentOffset = 5.0;
1324 static constexpr
int VTK_MAXIMUM_NUMBER_OF_POLAR_AXES = 20;
1325 static constexpr
int VTK_MAXIMUM_NUMBER_OF_RADIAL_AXES = 50;
1326 static constexpr
double VTK_MINIMUM_POLAR_ARC_RESOLUTION_PER_DEG = 0.05;
1327 static constexpr
double VTK_MAXIMUM_POLAR_ARC_RESOLUTION_PER_DEG = 100.0;
1333 VTK_ABI_NAMESPACE_END
represents an object (geometry & properties) in a rendered scene
abstract specification for Viewports
represent surface properties of a geometric object
virtual int RenderOverlay(vtkViewport *)
record modification and/or execution time
Create an axis with tick marks and labels.
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
a vtkAbstractArray subclass for strings
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).
void ReleaseGraphicsResources(vtkWindow *) override
Release any graphics resources that are being consumed by this actor.
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.
a simple class to control print indentation
a virtual camera for 3D rendering
double * GetBounds() override
Return a reference to the Prop3D's composite transform.
represent text properties.
map vtkPolyData to graphics primitives
vtkTypeBool HasTranslucentPolygonalGeometry() override
Does this prop have some opaque/translucent polygonal geometry?
int RenderTranslucentPolygonalGeometry(vtkViewport *viewport) override
Support the standard render methods.
int RenderOpaqueGeometry(vtkViewport *viewport) override
Support the standard render methods.
represent and manipulate 3D points
create an actor of a polar axes -