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);
vtkProperty * SecondaryRadialAxesProperty
General properties of radial axes.
double MinimumRadius
Minimum polar radius.
int PolarAxisTitleLocation
Define the alignement of the title related to the polar axis.
vtkPolyDataMapper * ArcTickPolyDataMapper
vtk object for arc Ticks
vtkActor * ArcTickActor
vtk object for arc Ticks
bool AutoScaleRadius
Auto-scale polar radius (with respect to average length scale of x-y bounding box).
represents an object (geometry & properties) in a rendered scene
vtkTextProperty * SecondaryRadialAxesTextProperty
Text properties of secondary radial axes.
double MaximumAngle
Maximum polar angle Default: 90.
int TickLocation
Describes the tick orientation for the graph elements involved by this property.
vtkPolyDataMapper * SecondaryPolarArcsMapper
Structures for secondary polar arcs.
char * PolarLabelFormat
Title to be used for the polar axis NB: Non-polar radial axes use the polar angle as title and have n...
abstract specification for Viewports
represent surface properties of a geometric object
virtual int RenderTranslucentPolygonalGeometry(vtkViewport *)
Draw the polar axes.
virtual int RenderOverlay(vtkViewport *)
int EnableDistanceLOD
If enabled the actor will not be visible at a certain distance from the camera.
double Ratio
Ratio for elliptical representation of the polar axes actor.
vtkPolyDataMapper * PolarArcsMapper
record modification and/or execution time
Create an axis with tick marks and labels.
vtkPolyData * SecondaryPolarArcs
Structures for secondary polar arcs.
double PolarAxisMajorTickThickness
Defines the tickness of the major ticks.
vtkActor * ArcMinorTickActor
vtk object for arc Ticks
char * PolarAxisTitle
Title to be used for the polar axis NB: Non-polar radial axes use the polar angle as title and have n...
a vtkAbstractArray subclass for strings
vtkTextProperty * PolarAxisTitleTextProperty
Text properties of polar axis title and labels.
double SmallestVisiblePolarAngle
Smallest radial angle distinguishable from polar axis.
vtkActor * SecondaryPolarArcsActor
Structures for secondary polar arcs.
concrete dataset represents vertices, lines, polygons, and triangle strips
static vtkActor * New()
Creates an actor with the following defaults: origin(0,0,0) position=(0,0,0) scale=(1,1,1) visibility=1 pickable=1 dragable=1 orientation=(0,0,0).
double MinimumAngle
Minimum polar angle Default: 0.
int DrawPolarArcsGridlines
Visibility of the inner arcs (overriden to 0 if PolarArcsVisibility is set to 0)
int PolarArcsVisibility
Visibility of polar arcs.
void PrintSelf(ostream &os, vtkIndent indent)
Methods invoked by print to print information about the object including superclasses.
vtkAxisActor ** RadialAxes
Control variables for non-polar radial axes.
double PolarAxisMajorTickSize
Defines the length of the ticks located on the last arc.
vtkActor * PolarArcsActor
int PolarTickVisibility
Hold visibility for all present ticks.
double ScreenSize
Text screen size.
window superclass for vtkRenderWindow
vtkProperty * PolarAxisProperty
General properties of polar axis Behavior may be override by polar axis ticks 's actor property...
int PolarAxisVisibility
Visibility of polar axis and its title, labels, ticks (major only)
double PolarAxisTickRatioSize
Set the ratios between major tick Size for each ticks location.
int ExponentLocation
Define the location of the exponent of the labels values, located on the polar axis.
int RadialAxisTitleLocation
Define the alignement of the title related to the radial axis.
double DeltaAngleMinor
Angle between 2 minor ticks on the last arc.
double DeltaAngleMajor
Angle between 2 major ticks on the last arc.
a simple class to control print indentation
a virtual camera for 3D rendering
vtkPolyDataMapper * ArcMinorTickPolyDataMapper
vtk object for arc Ticks
int NumberOfRadialAxes
Number of radial axes.
vtkGetStringMacro(ExtensionsString)
Returns a string listing all available extensions.
int PolarLabelVisibility
Visibility of polar axis and its title, labels, ticks (major only)
represent text properties.
vtkProperty * LastRadialAxisProperty
General properties of last radial axis.
int RadialAxesVisibility
Visibility of radial axes and their titles.
vtkSetMacro(IgnoreDriverBugs, bool)
When set known driver bugs are ignored during driver feature detection.
int ArcTickVisibility
Enable / Disable major/minor tick visibility on the last arc displayed.
double * GetBounds()
Return a reference to the Prop3D's composite transform.
map vtkPolyData to graphics primitives
int RadialTitleVisibility
Visibility of radial axes and their titles.
vtkAxisActor * PolarAxis
Control variables for polar axis.
double TitleScale
Title scale factor.
double PolarAxisTickRatioThickness
Set the ratios between major tick thickness for each ticks location.
virtual int RenderOpaqueGeometry(vtkViewport *viewport)
Support the standard render methods.
double ViewAngleLODThreshold
This determines at what view angle to geometry will make the geometry not visibile.
int DrawRadialGridlines
Visibility of the inner axes (overriden to 0 if RadialAxesVisibility is set to 0) ...
bool RadialUnits
Display angle units (degrees) to label radial axes Default is true.
vtkCamera * Camera
Camera attached to the polar axes system.
vtkPolyData * ArcMinorTickPolyData
vtk object for arc Ticks
int AxisTickVisibility
Hold visibility of major/minor ticks for the polar axis and the last radial axis. ...
int PolarTitleVisibility
Visibility of polar axis and its title, labels, ticks (major only)
double LabelScale
Label scale factor.
int EnableViewAngleLOD
If enabled the actor will not be visible at a certain view angle.
void ReleaseGraphicsResources(vtkWindow *)
Release any graphics resources that are being consumed by this actor.
double DeltaAngleRadialAxes
Angle between 2 radial Axes.
vtkBooleanMacro(IgnoreDriverBugs, bool)
When set known driver bugs are ignored during driver feature detection.
vtkTextProperty * LastRadialAxisTextProperty
Text properties of last radial axis.
int ArcTicksOriginToPolarAxis
If On, the ticks are drawn from the angle of the polarAxis (i.e.
double MaximumRadius
Maximum polar radius.
vtkPoints * ArcMajorTickPts
Keep the arc major ticks vtkPoints instances.
int RadialAxesOriginToPolarAxis
If On, the radial axes are drawn from the angle of the polarAxis (i.e.
double DeltaRangeMajor
Step between 2 major ticks, in range value (values displayed on the axis).
vtkPoints * ArcMinorTickPts
Keep the arc minor ticks vtkPoints instances.
bool Log
Enable/Disable log scale Default: 0.
represent and manipulate 3D points
char * RadialAngleFormat
String to format angle values displayed on the radial axes.
vtkTextProperty * PolarAxisLabelTextProperty
Text properties of polar axis title and labels.
vtkPolyData * ArcTickPolyData
vtk object for arc Ticks
bool AutoSubdividePolarAxis
Whether the number of polar axis ticks and arcs should be automatically calculated.
double DeltaRangeMinor
Step between 2 minor ticks, in range value (values displayed on the axis).
double DistanceLODThreshold
Default is 0.80 This determines at what fraction of camera far clip range, actor is not visible...
create an actor of a polar axes -