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
50 #include "vtkRenderingAnnotationModule.h"
85 virtual void SetPole(
double[3]);
86 virtual void SetPole(
double,
double,
double);
87 vtkGetVector3Macro(Pole,
double);
95 vtkSetMacro(Log,
bool);
96 vtkGetMacro(Log,
bool);
97 vtkBooleanMacro(Log,
bool);
105 vtkGetMacro(RequestedNumberOfRadialAxes,
vtkIdType);
113 virtual void SetNumberOfPolarAxisTicks(
int);
114 int GetNumberOfPolarAxisTicks();
122 vtkSetMacro(AutoSubdividePolarAxis,
bool);
123 vtkGetMacro(AutoSubdividePolarAxis,
bool);
124 vtkBooleanMacro(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);
155 virtual void SetMinimumAngle(
double);
156 vtkGetMacro(MinimumAngle,
double);
163 virtual void SetMaximumAngle(
double);
164 vtkGetMacro(MaximumAngle,
double);
173 vtkSetClampMacro(SmallestVisiblePolarAngle,
double, 0., 5.);
174 vtkGetMacro(SmallestVisiblePolarAngle,
double);
184 vtkGetMacro(TickLocation,
int);
191 vtkSetMacro(RadialUnits,
bool);
192 vtkGetMacro(RadialUnits,
bool);
202 vtkSetMacro(ScreenSize,
double);
203 vtkGetMacro(ScreenSize,
double);
220 vtkSetStringMacro(PolarAxisTitle);
221 vtkGetStringMacro(PolarAxisTitle);
228 vtkSetStringMacro(PolarLabelFormat);
229 vtkGetStringMacro(PolarLabelFormat);
234 VTK_EXPONENT_BOTTOM = 0,
235 VTK_EXPONENT_EXTERN = 1,
236 VTK_EXPONENT_LABELS = 2
245 vtkSetClampMacro(ExponentLocation,
int, VTK_EXPONENT_BOTTOM, VTK_EXPONENT_LABELS);
246 vtkGetMacro(ExponentLocation,
int);
253 vtkSetStringMacro(RadialAngleFormat);
254 vtkGetStringMacro(RadialAngleFormat);
268 vtkSetMacro(EnableDistanceLOD,
int);
269 vtkGetMacro(EnableDistanceLOD,
int);
276 vtkSetClampMacro(DistanceLODThreshold,
double, 0.0, 1.0);
277 vtkGetMacro(DistanceLODThreshold,
double);
284 vtkSetMacro(EnableViewAngleLOD,
int);
285 vtkGetMacro(EnableViewAngleLOD,
int);
292 vtkSetClampMacro(ViewAngleLODThreshold,
double, 0., 1.);
293 vtkGetMacro(ViewAngleLODThreshold,
double);
320 vtkBooleanMacro(DrawPolarArcsGridlines,
vtkTypeBool);
329 vtkBooleanMacro(PolarTitleVisibility,
vtkTypeBool);
334 VTK_TITLE_BOTTOM = 0,
343 vtkSetClampMacro(RadialAxisTitleLocation,
int, VTK_TITLE_BOTTOM, VTK_TITLE_EXTERN);
344 vtkGetMacro(RadialAxisTitleLocation,
int);
352 vtkSetClampMacro(PolarAxisTitleLocation,
int, VTK_TITLE_BOTTOM, VTK_TITLE_EXTERN);
353 vtkGetMacro(PolarAxisTitleLocation,
int);
362 vtkBooleanMacro(PolarLabelVisibility,
vtkTypeBool);
372 vtkSetMacro(ArcTicksOriginToPolarAxis,
vtkTypeBool);
373 vtkGetMacro(ArcTicksOriginToPolarAxis,
vtkTypeBool);
374 vtkBooleanMacro(ArcTicksOriginToPolarAxis,
vtkTypeBool);
384 vtkSetMacro(RadialAxesOriginToPolarAxis,
vtkTypeBool);
385 vtkGetMacro(RadialAxesOriginToPolarAxis,
vtkTypeBool);
386 vtkBooleanMacro(RadialAxesOriginToPolarAxis,
vtkTypeBool);
413 vtkBooleanMacro(AxisMinorTickVisibility,
vtkTypeBool);
431 vtkBooleanMacro(ArcMinorTickVisibility,
vtkTypeBool);
438 vtkSetMacro(ArcMajorTickSize,
double);
439 vtkGetMacro(ArcMajorTickSize,
double);
446 vtkSetMacro(PolarAxisMajorTickSize,
double);
447 vtkGetMacro(PolarAxisMajorTickSize,
double);
454 vtkSetMacro(LastRadialAxisMajorTickSize,
double);
455 vtkGetMacro(LastRadialAxisMajorTickSize,
double);
462 vtkSetMacro(PolarAxisTickRatioSize,
double);
463 vtkGetMacro(PolarAxisTickRatioSize,
double);
470 vtkSetMacro(LastAxisTickRatioSize,
double);
471 vtkGetMacro(LastAxisTickRatioSize,
double);
478 vtkSetMacro(ArcTickRatioSize,
double);
479 vtkGetMacro(ArcTickRatioSize,
double);
486 vtkSetMacro(PolarAxisMajorTickThickness,
double);
487 vtkGetMacro(PolarAxisMajorTickThickness,
double);
494 vtkSetMacro(LastRadialAxisMajorTickThickness,
double);
495 vtkGetMacro(LastRadialAxisMajorTickThickness,
double);
502 vtkSetMacro(ArcMajorTickThickness,
double);
503 vtkGetMacro(ArcMajorTickThickness,
double);
510 vtkSetMacro(PolarAxisTickRatioThickness,
double);
511 vtkGetMacro(PolarAxisTickRatioThickness,
double);
518 vtkSetMacro(LastAxisTickRatioThickness,
double);
519 vtkGetMacro(LastAxisTickRatioThickness,
double);
526 vtkSetMacro(ArcTickRatioThickness,
double);
527 vtkGetMacro(ArcTickRatioThickness,
double);
534 vtkSetMacro(DeltaRangeMajor,
double);
535 vtkGetMacro(DeltaRangeMajor,
double);
542 vtkSetMacro(DeltaRangeMinor,
double);
543 vtkGetMacro(DeltaRangeMinor,
double);
550 vtkSetMacro(DeltaAngleMajor,
double);
551 vtkGetMacro(DeltaAngleMajor,
double);
558 vtkSetMacro(DeltaAngleMinor,
double);
559 vtkGetMacro(DeltaAngleMinor,
double);
566 vtkSetMacro(DeltaAngleRadialAxes,
double);
567 vtkGetMacro(DeltaAngleRadialAxes,
double);
578 vtkBooleanMacro(RadialAxesVisibility,
vtkTypeBool);
587 vtkBooleanMacro(RadialTitleVisibility,
vtkTypeBool);
603 void SetUse2DMode(
int val);
651 virtual void SetLastRadialAxisProperty(
vtkProperty* p);
652 vtkGetObjectMacro(LastRadialAxisProperty,
vtkProperty);
659 virtual void SetSecondaryRadialAxesProperty(
vtkProperty* p);
660 vtkGetObjectMacro(SecondaryRadialAxesProperty,
vtkProperty);
675 virtual void SetSecondaryPolarArcsProperty(
vtkProperty* p);
686 vtkSetVector6Macro(Bounds,
double);
689 double& xmin,
double& xmax,
double& ymin,
double& ymax,
double& zmin,
double& zmax);
697 vtkSetClampMacro(Ratio,
double, 0.001, 100.0);
698 vtkGetMacro(Ratio,
double);
708 bool CheckMembersConsistency();
719 void CalculateBounds();
734 void CreateRadialAxes(
int axisCount);
739 void BuildRadialAxes();
747 void AutoComputeTicksProperties();
752 double ComputeIdealStep(
int subDivsRequired,
double rangeLength,
int maxSubDivs = 1000);
757 void BuildArcTicks();
763 void StoreTicksPtsFromParamEllipse(
764 double a,
double angleEllipseRad,
double tickSize,
vtkPoints* tickPts);
769 void BuildPolarAxisLabelsArcs();
774 void BuildPolarAxisLabelsArcsLog();
779 void BuildLabelsLog();
781 void BuildPolarArcsLog();
786 std::string FindExponentAndAdjustValues(std::list<double>& valuesList);
791 void GetSignificantPartFromValues(
vtkStringArray* valuesStr, std::list<double>& valuesList);
798 double FSign(
double,
double);
811 static double ComputeEllipseAngle(
double angleInDegrees,
double ratio);
816 virtual void ComputeDeltaAngleRadialAxes(
vtkIdType);