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"
79 virtual void SetPole(
double[3]);
80 virtual void SetPole(
double,
double,
double);
81 vtkGetVector3Macro(Pole,
double);
89 vtkSetMacro(Log,
bool);
90 vtkGetMacro(Log,
bool);
91 vtkBooleanMacro(Log,
bool);
99 vtkGetMacro(RequestedNumberOfRadialAxes,
vtkIdType);
107 virtual void SetNumberOfPolarAxisTicks(
int);
108 int GetNumberOfPolarAxisTicks();
116 vtkSetMacro(AutoSubdividePolarAxis,
bool);
117 vtkGetMacro(AutoSubdividePolarAxis,
bool);
118 vtkBooleanMacro(AutoSubdividePolarAxis,
bool);
125 vtkSetVector2Macro(Range,
double);
126 vtkGetVectorMacro(Range,
double, 2);
133 virtual void SetMinimumRadius(
double);
134 vtkGetMacro(MinimumRadius,
double);
141 virtual void SetMaximumRadius(
double);
142 vtkGetMacro(MaximumRadius,
double);
149 virtual void SetMinimumAngle(
double);
150 vtkGetMacro(MinimumAngle,
double);
157 virtual void SetMaximumAngle(
double);
158 vtkGetMacro(MaximumAngle,
double);
167 vtkSetClampMacro(SmallestVisiblePolarAngle,
double, 0., 5.);
168 vtkGetMacro(SmallestVisiblePolarAngle,
double);
178 vtkGetMacro(TickLocation,
int);
185 vtkSetMacro(RadialUnits,
bool);
186 vtkGetMacro(RadialUnits,
bool);
196 vtkSetMacro(ScreenSize,
double);
197 vtkGetMacro(ScreenSize,
double);
214 vtkSetStringMacro(PolarAxisTitle);
215 vtkGetStringMacro(PolarAxisTitle);
222 vtkSetStringMacro(PolarLabelFormat);
223 vtkGetStringMacro(PolarLabelFormat);
228 VTK_EXPONENT_BOTTOM = 0,
229 VTK_EXPONENT_EXTERN = 1,
230 VTK_EXPONENT_LABELS = 2
239 vtkSetClampMacro(ExponentLocation,
int, VTK_EXPONENT_BOTTOM, VTK_EXPONENT_LABELS);
240 vtkGetMacro(ExponentLocation,
int);
247 vtkSetStringMacro(RadialAngleFormat);
248 vtkGetStringMacro(RadialAngleFormat);
262 vtkSetMacro(EnableDistanceLOD,
int);
263 vtkGetMacro(EnableDistanceLOD,
int);
270 vtkSetClampMacro(DistanceLODThreshold,
double, 0.0, 1.0);
271 vtkGetMacro(DistanceLODThreshold,
double);
278 vtkSetMacro(EnableViewAngleLOD,
int);
279 vtkGetMacro(EnableViewAngleLOD,
int);
286 vtkSetClampMacro(ViewAngleLODThreshold,
double, 0., 1.);
287 vtkGetMacro(ViewAngleLODThreshold,
double);
314 vtkBooleanMacro(DrawPolarArcsGridlines,
vtkTypeBool);
323 vtkBooleanMacro(PolarTitleVisibility,
vtkTypeBool);
328 VTK_TITLE_BOTTOM = 0,
337 vtkSetClampMacro(RadialAxisTitleLocation,
int, VTK_TITLE_BOTTOM, VTK_TITLE_EXTERN);
338 vtkGetMacro(RadialAxisTitleLocation,
int);
346 vtkSetClampMacro(PolarAxisTitleLocation,
int, VTK_TITLE_BOTTOM, VTK_TITLE_EXTERN);
347 vtkGetMacro(PolarAxisTitleLocation,
int);
356 vtkBooleanMacro(PolarLabelVisibility,
vtkTypeBool);
366 vtkSetMacro(ArcTicksOriginToPolarAxis,
vtkTypeBool);
367 vtkGetMacro(ArcTicksOriginToPolarAxis,
vtkTypeBool);
368 vtkBooleanMacro(ArcTicksOriginToPolarAxis,
vtkTypeBool);
378 vtkSetMacro(RadialAxesOriginToPolarAxis,
vtkTypeBool);
379 vtkGetMacro(RadialAxesOriginToPolarAxis,
vtkTypeBool);
380 vtkBooleanMacro(RadialAxesOriginToPolarAxis,
vtkTypeBool);
407 vtkBooleanMacro(AxisMinorTickVisibility,
vtkTypeBool);
425 vtkBooleanMacro(ArcMinorTickVisibility,
vtkTypeBool);
432 vtkSetMacro(ArcMajorTickSize,
double);
433 vtkGetMacro(ArcMajorTickSize,
double);
440 vtkSetMacro(PolarAxisMajorTickSize,
double);
441 vtkGetMacro(PolarAxisMajorTickSize,
double);
448 vtkSetMacro(LastRadialAxisMajorTickSize,
double);
449 vtkGetMacro(LastRadialAxisMajorTickSize,
double);
456 vtkSetMacro(PolarAxisTickRatioSize,
double);
457 vtkGetMacro(PolarAxisTickRatioSize,
double);
464 vtkSetMacro(LastAxisTickRatioSize,
double);
465 vtkGetMacro(LastAxisTickRatioSize,
double);
472 vtkSetMacro(ArcTickRatioSize,
double);
473 vtkGetMacro(ArcTickRatioSize,
double);
480 vtkSetMacro(PolarAxisMajorTickThickness,
double);
481 vtkGetMacro(PolarAxisMajorTickThickness,
double);
488 vtkSetMacro(LastRadialAxisMajorTickThickness,
double);
489 vtkGetMacro(LastRadialAxisMajorTickThickness,
double);
496 vtkSetMacro(ArcMajorTickThickness,
double);
497 vtkGetMacro(ArcMajorTickThickness,
double);
504 vtkSetMacro(PolarAxisTickRatioThickness,
double);
505 vtkGetMacro(PolarAxisTickRatioThickness,
double);
512 vtkSetMacro(LastAxisTickRatioThickness,
double);
513 vtkGetMacro(LastAxisTickRatioThickness,
double);
520 vtkSetMacro(ArcTickRatioThickness,
double);
521 vtkGetMacro(ArcTickRatioThickness,
double);
528 vtkSetMacro(DeltaRangeMajor,
double);
529 vtkGetMacro(DeltaRangeMajor,
double);
536 vtkSetMacro(DeltaRangeMinor,
double);
537 vtkGetMacro(DeltaRangeMinor,
double);
544 vtkSetMacro(DeltaAngleMajor,
double);
545 vtkGetMacro(DeltaAngleMajor,
double);
552 vtkSetMacro(DeltaAngleMinor,
double);
553 vtkGetMacro(DeltaAngleMinor,
double);
560 vtkSetMacro(DeltaAngleRadialAxes,
double);
561 vtkGetMacro(DeltaAngleRadialAxes,
double);
572 vtkBooleanMacro(RadialAxesVisibility,
vtkTypeBool);
581 vtkBooleanMacro(RadialTitleVisibility,
vtkTypeBool);
597 void SetUse2DMode(
int val);
645 virtual void SetLastRadialAxisProperty(
vtkProperty* p);
646 vtkGetObjectMacro(LastRadialAxisProperty,
vtkProperty);
653 virtual void SetSecondaryRadialAxesProperty(
vtkProperty* p);
654 vtkGetObjectMacro(SecondaryRadialAxesProperty,
vtkProperty);
669 virtual void SetSecondaryPolarArcsProperty(
vtkProperty* p);
680 vtkSetVector6Macro(Bounds,
double);
683 double& xmin,
double& xmax,
double& ymin,
double& ymax,
double& zmin,
double& zmax);
691 vtkSetClampMacro(Ratio,
double, 0.001, 100.0);
692 vtkGetMacro(Ratio,
double);
702 bool CheckMembersConsistency();
713 void CalculateBounds();
728 void CreateRadialAxes(
int axisCount);
733 void BuildRadialAxes();
741 void AutoComputeTicksProperties();
746 double ComputeIdealStep(
int subDivsRequired,
double rangeLength,
int maxSubDivs = 1000);
751 void BuildArcTicks();
757 void StoreTicksPtsFromParamEllipse(
758 double a,
double angleEllipseRad,
double tickSize,
vtkPoints* tickPts);
763 void BuildPolarAxisLabelsArcs();
768 void BuildPolarAxisLabelsArcsLog();
773 void BuildLabelsLog();
775 void BuildPolarArcsLog();
780 std::string FindExponentAndAdjustValues(std::list<double>& valuesList);
785 void GetSignificantPartFromValues(
vtkStringArray* valuesStr, std::list<double>& valuesList);
792 double FSign(
double,
double);
805 static double ComputeEllipseAngle(
double angleInDegrees,
double ratio);
810 virtual void ComputeDeltaAngleRadialAxes(
vtkIdType);