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