39 #ifndef vtkPolarAxesActor_h
40 #define vtkPolarAxesActor_h
42 #define VTK_MAXIMUM_NUMBER_OF_RADIAL_AXES 50
43 #define VTK_DEFAULT_NUMBER_OF_RADIAL_AXES 5
44 #define VTK_MAXIMUM_NUMBER_OF_POLAR_AXIS_TICKS 200
45 #define VTK_MAXIMUM_RATIO 1000.0
46 #define VTK_POLAR_ARC_RESOLUTION_PER_DEG 0.2
48 #include "vtkRenderingAnnotationModule.h"
85 virtual void SetPole(
double[3]);
86 virtual void SetPole(
double,
double,
double);
87 vtkGetVector3Macro(Pole,
double);
96 vtkGetMacro(Log,
bool);
104 virtual void SetNumberOfRadialAxes(
vtkIdType);
105 vtkGetMacro(NumberOfRadialAxes,
vtkIdType);
113 virtual void SetNumberOfPolarAxisTicks(
int);
114 int GetNumberOfPolarAxisTicks();
123 vtkGetMacro(AutoSubdividePolarAxis,
bool);
131 vtkSetVector2Macro(Range,
double);
132 vtkGetVectorMacro(Range,
double, 2);
139 virtual void SetMinimumRadius(
double);
140 vtkGetMacro(MinimumRadius,
double);
147 virtual void SetMaximumRadius(
double);
148 vtkGetMacro(MaximumRadius,
double);
157 vtkGetMacro(AutoScaleRadius,
bool);
164 virtual void SetMinimumAngle(
double);
165 vtkGetMacro(MinimumAngle,
double);
172 virtual void SetMaximumAngle(
double);
173 vtkGetMacro(MaximumAngle,
double);
182 vtkSetClampMacro(SmallestVisiblePolarAngle,
double, 0., 5.);
183 vtkGetMacro(SmallestVisiblePolarAngle,
double);
193 vtkGetMacro(TickLocation,
int);
201 vtkGetMacro(RadialUnits,
bool);
212 vtkGetMacro(ScreenSize,
double);
229 vtkSetStringMacro(PolarAxisTitle);
237 vtkSetStringMacro(PolarLabelFormat);
243 VTK_EXPONENT_BOTTOM = 0,
244 VTK_EXPONENT_EXTERN = 1,
245 VTK_EXPONENT_LABELS = 2
254 vtkSetClampMacro(ExponentLocation,
int, VTK_EXPONENT_BOTTOM, VTK_EXPONENT_LABELS);
255 vtkGetMacro(ExponentLocation,
int);
262 vtkSetStringMacro(RadialAngleFormat);
278 vtkGetMacro(EnableDistanceLOD,
int);
285 vtkSetClampMacro(DistanceLODThreshold,
double, 0.0, 1.0);
286 vtkGetMacro(DistanceLODThreshold,
double);
294 vtkGetMacro(EnableViewAngleLOD,
int);
301 vtkSetClampMacro(ViewAngleLODThreshold,
double, 0., 1.);
302 vtkGetMacro(ViewAngleLODThreshold,
double);
310 vtkGetMacro(PolarAxisVisibility,
int);
319 vtkGetMacro(DrawRadialGridlines,
int);
328 vtkGetMacro(DrawPolarArcsGridlines,
int);
337 vtkGetMacro(PolarTitleVisibility,
int);
343 VTK_TITLE_BOTTOM = 0,
352 vtkSetClampMacro(RadialAxisTitleLocation,
int, VTK_TITLE_BOTTOM, VTK_TITLE_EXTERN);
353 vtkGetMacro(RadialAxisTitleLocation,
int);
361 vtkSetClampMacro(PolarAxisTitleLocation,
int, VTK_TITLE_BOTTOM, VTK_TITLE_EXTERN);
362 vtkGetMacro(PolarAxisTitleLocation,
int);
370 vtkGetMacro(PolarLabelVisibility,
int);
381 vtkGetMacro(ArcTicksOriginToPolarAxis,
int);
392 vtkGetMacro(RadialAxesOriginToPolarAxis,
int);
401 vtkGetMacro(PolarTickVisibility,
int);
410 vtkGetMacro(AxisTickVisibility,
int);
419 vtkGetMacro(AxisMinorTickVisibility,
int);
428 vtkGetMacro(ArcTickVisibility,
int);
437 vtkGetMacro(ArcMinorTickVisibility,
int);
446 vtkGetMacro(ArcMajorTickSize,
double);
454 vtkGetMacro(PolarAxisMajorTickSize,
double);
462 vtkGetMacro(LastRadialAxisMajorTickSize,
double);
470 vtkGetMacro(PolarAxisTickRatioSize,
double);
478 vtkGetMacro(LastAxisTickRatioSize,
double);
486 vtkGetMacro(ArcTickRatioSize,
double);
494 vtkGetMacro(PolarAxisMajorTickThickness,
double);
501 vtkSetMacro(LastRadialAxisMajorTickThickness,
double);
502 vtkGetMacro(LastRadialAxisMajorTickThickness,
double);
510 vtkGetMacro(ArcMajorTickThickness,
double);
518 vtkGetMacro(PolarAxisTickRatioThickness,
double);
526 vtkGetMacro(LastAxisTickRatioThickness,
double);
534 vtkGetMacro(ArcTickRatioThickness,
double);
542 vtkGetMacro(DeltaRangeMajor,
double);
550 vtkGetMacro(DeltaRangeMinor,
double);
558 vtkGetMacro(DeltaAngleMajor,
double);
566 vtkGetMacro(DeltaAngleMinor,
double);
574 vtkGetMacro(DeltaAngleRadialAxes,
double);
584 vtkGetMacro(RadialAxesVisibility,
int);
593 vtkGetMacro(RadialTitleVisibility,
int);
602 vtkGetMacro(PolarArcsVisibility,
int);
610 void SetUse2DMode(
int val);
658 virtual void SetLastRadialAxisProperty(
vtkProperty* p);
659 vtkGetObjectMacro(LastRadialAxisProperty,
vtkProperty);
666 virtual void SetSecondaryRadialAxesProperty(
vtkProperty* p);
667 vtkGetObjectMacro(SecondaryRadialAxesProperty,
vtkProperty);
682 virtual void SetSecondaryPolarArcsProperty(
vtkProperty* p);
693 vtkSetVector6Macro(Bounds,
double);
695 void GetBounds(
double& xmin,
double& xmax,
double& ymin,
double& ymax,
696 double& zmin,
double& zmax);
704 vtkSetClampMacro(Ratio,
double, 0.001, 100.0);
705 vtkGetMacro(Ratio,
double);
715 bool CheckMembersConsistency();
726 void CalculateBounds();
741 void CreateRadialAxes(
int axisCount);
746 void BuildRadialAxes();
753 void AutoComputeTicksProperties();
758 double ComputeIdealStep(
int subDivsRequired,
double rangeLength,
int maxSubDivs = 1000);
763 void BuildArcTicks();
768 void StoreTicksPtsFromParamEllipse(
double a,
double angleEllipseRad,
double tickSize,
vtkPoints* tickPts);
773 void BuildPolarAxisLabelsArcs();
778 void BuildPolarAxisLabelsArcsLog();
783 void BuildLabelsLog();
785 void BuildPolarArcsLog();
790 std::string FindExponentAndAdjustValues(std::list<double>& valuesList);
795 void GetSignificantPartFromValues(
vtkStringArray* valuesStr, std::list<double>& valuesList);
802 double FSign(
double,
double);
815 static double ComputeEllipseAngle(
double angleInDegrees,
double ratio);