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);