VTK  9.2.6
vtkPolarAxesActor.h
Go to the documentation of this file.
1/*=========================================================================
2
3 Program: Visualization Toolkit
4 Module: vtkCubeAxesActor.h
5 Language: C++
6
7Copyright (c) 1993-2001 Ken Martin, Will Schroeder, Bill Lorensen
8All rights reserve
9 See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
10
11 This software is distributed WITHOUT ANY WARRANTY; without even
12 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
13 PURPOSE. See the above copyright notice for more information.
14=========================================================================*/
35
36#ifndef vtkPolarAxesActor_h
37#define vtkPolarAxesActor_h
38
39#define VTK_MAXIMUM_NUMBER_OF_RADIAL_AXES 50
40#define VTK_DEFAULT_NUMBER_OF_RADIAL_AXES 5
41#define VTK_MAXIMUM_NUMBER_OF_POLAR_AXIS_TICKS 200
42#define VTK_MAXIMUM_RATIO 1000.0
43#define VTK_POLAR_ARC_RESOLUTION_PER_DEG 0.2
44
45#include "vtkActor.h"
46#include "vtkAxisActor.h" // access to enum values
47#include "vtkRenderingAnnotationModule.h" // For export macro
48#include <list> // To process exponent list as reference
49#include <string> // used for ivar
50
51class vtkCamera;
52class vtkPolyData;
54class vtkProperty;
55class vtkStringArray;
56class vtkTextProperty;
57
58class VTKRENDERINGANNOTATION_EXPORT vtkPolarAxesActor : public vtkActor
59{
60public:
62 void PrintSelf(ostream& os, vtkIndent indent) override;
63
69
71
75 int RenderOverlay(vtkViewport*) override;
78
80
83 virtual void SetPole(double[3]);
84 virtual void SetPole(double, double, double);
85 vtkGetVector3Macro(Pole, double);
87
89
93 vtkSetMacro(Log, bool);
94 vtkGetMacro(Log, bool);
95 vtkBooleanMacro(Log, bool);
97
99
105
107
111 virtual void SetNumberOfPolarAxisTicks(int);
114
116
120 vtkSetMacro(AutoSubdividePolarAxis, bool);
121 vtkGetMacro(AutoSubdividePolarAxis, bool);
122 vtkBooleanMacro(AutoSubdividePolarAxis, bool);
124
126
129 vtkSetVector2Macro(Range, double);
130 vtkGetVectorMacro(Range, double, 2);
132
134
137 virtual void SetMinimumRadius(double);
138 vtkGetMacro(MinimumRadius, double);
140
142
145 virtual void SetMaximumRadius(double);
146 vtkGetMacro(MaximumRadius, double);
148
150
153 virtual void SetMinimumAngle(double);
154 vtkGetMacro(MinimumAngle, double);
156
158
161 virtual void SetMaximumAngle(double);
162 vtkGetMacro(MaximumAngle, double);
164
166
171 vtkSetClampMacro(SmallestVisiblePolarAngle, double, 0., 5.);
172 vtkGetMacro(SmallestVisiblePolarAngle, double);
174
176
182 vtkGetMacro(TickLocation, int);
184
186
189 vtkSetMacro(RadialUnits, bool);
190 vtkGetMacro(RadialUnits, bool);
192
194
200 vtkSetMacro(ScreenSize, double);
201 vtkGetMacro(ScreenSize, double);
203
205
209 virtual void SetCamera(vtkCamera*);
210 vtkGetObjectMacro(Camera, vtkCamera);
212
214
218 vtkSetStringMacro(PolarAxisTitle);
219 vtkGetStringMacro(PolarAxisTitle);
221
223
226 vtkSetStringMacro(PolarLabelFormat);
227 vtkGetStringMacro(PolarLabelFormat);
229
236
238
244 vtkGetMacro(ExponentLocation, int);
246
248
251 vtkSetStringMacro(RadialAngleFormat);
252 vtkGetStringMacro(RadialAngleFormat);
254
261
263
266 vtkSetMacro(EnableDistanceLOD, int);
267 vtkGetMacro(EnableDistanceLOD, int);
269
271
274 vtkSetClampMacro(DistanceLODThreshold, double, 0.0, 1.0);
275 vtkGetMacro(DistanceLODThreshold, double);
277
279
282 vtkSetMacro(EnableViewAngleLOD, int);
283 vtkGetMacro(EnableViewAngleLOD, int);
285
287
290 vtkSetClampMacro(ViewAngleLODThreshold, double, 0., 1.);
291 vtkGetMacro(ViewAngleLODThreshold, double);
293
295
302
304
311
313
320
322
329
335
337
342 vtkGetMacro(RadialAxisTitleLocation, int);
344
346
351 vtkGetMacro(PolarAxisTitleLocation, int);
353
355
362
364
374
376
386
388
395
397
404
406
413
415
422
424
431
433
436 vtkSetMacro(ArcMajorTickSize, double);
437 vtkGetMacro(ArcMajorTickSize, double);
439
441
444 vtkSetMacro(PolarAxisMajorTickSize, double);
445 vtkGetMacro(PolarAxisMajorTickSize, double);
447
449
452 vtkSetMacro(LastRadialAxisMajorTickSize, double);
453 vtkGetMacro(LastRadialAxisMajorTickSize, double);
455
457
460 vtkSetMacro(PolarAxisTickRatioSize, double);
461 vtkGetMacro(PolarAxisTickRatioSize, double);
463
465
468 vtkSetMacro(LastAxisTickRatioSize, double);
469 vtkGetMacro(LastAxisTickRatioSize, double);
471
473
476 vtkSetMacro(ArcTickRatioSize, double);
477 vtkGetMacro(ArcTickRatioSize, double);
479
481
484 vtkSetMacro(PolarAxisMajorTickThickness, double);
485 vtkGetMacro(PolarAxisMajorTickThickness, double);
487
489
495
497
500 vtkSetMacro(ArcMajorTickThickness, double);
501 vtkGetMacro(ArcMajorTickThickness, double);
503
505
508 vtkSetMacro(PolarAxisTickRatioThickness, double);
509 vtkGetMacro(PolarAxisTickRatioThickness, double);
511
513
516 vtkSetMacro(LastAxisTickRatioThickness, double);
517 vtkGetMacro(LastAxisTickRatioThickness, double);
519
521
524 vtkSetMacro(ArcTickRatioThickness, double);
525 vtkGetMacro(ArcTickRatioThickness, double);
527
529
532 vtkSetMacro(DeltaRangeMajor, double);
533 vtkGetMacro(DeltaRangeMajor, double);
535
537
540 vtkSetMacro(DeltaRangeMinor, double);
541 vtkGetMacro(DeltaRangeMinor, double);
543
545
548 vtkSetMacro(DeltaAngleMajor, double);
549 vtkGetMacro(DeltaAngleMajor, double);
551
553
556 vtkSetMacro(DeltaAngleMinor, double);
557 vtkGetMacro(DeltaAngleMinor, double);
559
561
564 vtkSetMacro(DeltaAngleRadialAxes, double);
565 vtkGetMacro(DeltaAngleRadialAxes, double);
567
568 //------------------------------------------------
569
571
578
580
587
589
596
598
601 void SetUse2DMode(int val);
604
606
612
614
620
622
628
630
636
638
642 vtkGetObjectMacro(PolarAxisProperty, vtkProperty);
644
646
652
654
660
662
668
670
676
678
684 vtkSetVector6Macro(Bounds, double);
685 double* GetBounds() override;
687 double& xmin, double& xmax, double& ymin, double& ymax, double& zmin, double& zmax);
688 void GetBounds(double bounds[6]);
690
692
695 vtkSetClampMacro(Ratio, double, 0.001, 100.0);
696 vtkGetMacro(Ratio, double);
698
699protected:
702
707
713
718
723
728
732 void CreateRadialAxes(int axisCount);
733
738
746
750 double ComputeIdealStep(int subDivsRequired, double rangeLength, int maxSubDivs = 1000);
751
756
762 double a, double angleEllipseRad, double tickSize, vtkPoints* tickPts);
763
768
773
778
780
784 std::string FindExponentAndAdjustValues(std::list<double>& valuesList);
785
789 void GetSignificantPartFromValues(vtkStringArray* valuesStr, std::list<double>& valuesList);
790
792
795 double FFix(double);
796 double FSign(double, double);
798
803 void AutoScale(vtkViewport* viewport);
804
809 static double ComputeEllipseAngle(double angleInDegrees, double ratio);
810
819 double Pole[3];
820
825
830
836
840 double Ratio;
841
845 double Range[2];
846
851
856
861
866
871
877
883
888 bool Log;
889
894
900
906
911
912 // Structures for principal polar arc
916
918
925
930
935
940
942
949
954
960
966
972
978
984
986
993
1002
1007
1015
1023
1028
1033
1038
1043
1048
1053
1055
1061
1066
1071
1077
1082
1087
1092
1097
1102
1104
1114
1116
1122
1127
1132
1138
1143
1148
1150
1155
1160
1165
1166private:
1167 vtkPolarAxesActor(const vtkPolarAxesActor&) = delete;
1168 void operator=(const vtkPolarAxesActor&) = delete;
1169};
1170
1171#endif
Create an axis with tick marks and labels.
a virtual camera for 3D rendering
Definition vtkCamera.h:52
a simple class to control print indentation
Definition vtkIndent.h:40
represent and manipulate 3D points
Definition vtkPoints.h:40
vtkActor * ArcTickActor
vtk object for arc Ticks
double LastRadialAxisMajorTickThickness
double Range[2]
Define the range values displayed on the polar Axis.
bool AutoScaleRadius
Auto-scale polar radius (with respect to average length scale of x-y bounding box).
virtual void SetCamera(vtkCamera *)
Set/Get the camera to perform scaling and translation of the vtkPolarAxesActor.
double * GetBounds() override
Explicitly specify the region in space around which to draw the bounds.
bool AutoSubdividePolarAxis
Whether the number of polar axis ticks and arcs should be automatically calculated.
virtual void SetPolarAxisProperty(vtkProperty *)
Get/Set polar axis actor properties.
vtkTypeBool PolarLabelVisibility
Visibility of polar axis and its title, labels, ticks (major only)
void CalculateBounds()
Calculate bounds based on maximum radius and angular sector.
int RequestedNumberOfRadialAxes
Requested Number of radial axes.
void GetBounds(double bounds[6])
Explicitly specify the region in space around which to draw the bounds.
vtkTextProperty * PolarAxisTitleTextProperty
Text properties of polar axis title and labels.
void AutoScale(vtkViewport *viewport)
Automatically rescale titles and labels NB: Current implementation only for perspective projections.
double Pole[3]
Coordinates of the pole Default: (0,0,0).
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
void BuildPolarArcsLog()
vtkActor * ArcMinorTickActor
vtk object for arc Ticks
virtual void SetNumberOfPolarAxisTicks(int)
Set/Get a number of ticks that one would like to display along polar axis NB: it modifies DeltaRangeM...
vtkTypeBool RadialAxesVisibility
Visibility of radial axes and their titles.
vtkTypeBool PolarArcsVisibility
Visibility of polar arcs.
vtkTypeBool PolarTickVisibility
Hold visibility for all present ticks.
vtkProperty * PolarAxisProperty
General properties of polar axis Behavior may be override by polar axis ticks 's actor property.
int EnableDistanceLOD
If enabled the actor will not be visible at a certain distance from the camera.
int EnableViewAngleLOD
If enabled the actor will not be visible at a certain view angle.
vtkPoints * ArcMajorTickPts
Keep the arc major ticks vtkPoints instances.
virtual void SetLastRadialAxisTextProperty(vtkTextProperty *p)
Set/Get the last radial axis text property.
void BuildPolarAxisLabelsArcs()
Build polar axis labels and arcs with respect to specified pole.
virtual void SetLastRadialAxisProperty(vtkProperty *p)
Get/Set last radial axis actor properties.
vtkTextProperty * PolarAxisLabelTextProperty
Text properties of polar axis title and labels.
virtual void SetSecondaryPolarArcsProperty(vtkProperty *p)
Get/Set secondary polar arcs actors property.
virtual void SetSecondaryRadialAxesProperty(vtkProperty *p)
Get/Set secondary radial axes actors properties.
double DeltaAngleMinor
Angle between 2 minor ticks on the last arc.
void StoreTicksPtsFromParamEllipse(double a, double angleEllipseRad, double tickSize, vtkPoints *tickPts)
Init tick point located on an ellipse at angleEllipseRad angle and according to "a" major radius.
double MaximumRadius
Maximum polar radius.
virtual void SetMinimumRadius(double)
Set/Get the minimal radius of the polar coordinates.
virtual void ComputeDeltaAngleRadialAxes(vtkIdType)
Compute delta angle of radial axes.
double MinimumRadius
Minimum polar radius.
double MaximumAngle
Maximum polar angle Default: 90.
static vtkPolarAxesActor * New()
Instantiate object with label format "6.3g" and the number of labels per axis set to 3.
vtkPolyData * ArcMinorTickPolyData
vtk object for arc Ticks
void GetBounds(double &xmin, double &xmax, double &ymin, double &ymax, double &zmin, double &zmax)
Explicitly specify the region in space around which to draw the bounds.
double PolarAxisTickRatioSize
Set the ratios between major tick Size for each ticks location.
vtkProperty * SecondaryRadialAxesProperty
General properties of radial axes.
vtkTypeBool AxisMinorTickVisibility
void GetSignificantPartFromValues(vtkStringArray *valuesStr, std::list< double > &valuesList)
Yield a string array with the float part of each values.
int NumberOfRadialAxes
Number of radial axes.
int PolarAxisTitleLocation
Define the alignment of the title related to the polar axis.
char * PolarLabelFormat
Title to be used for the polar axis NB: Non-polar radial axes use the polar angle as title and have n...
vtkAxisActor * PolarAxis
Control variables for polar axis.
vtkTextProperty * SecondaryRadialAxesTextProperty
Text properties of secondary radial axes.
virtual void SetMinimumAngle(double)
Set/Get the minimum radius of the polar coordinates (in degrees).
vtkProperty * GetPolarArcsProperty()
Get/Set principal polar arc actor property.
double ViewAngleLODThreshold
This determines at what view angle to geometry will make the geometry not visible.
virtual void SetPole(double[3])
Explicitly specify the coordinate of the pole.
vtkPolyData * ArcTickPolyData
vtk object for arc Ticks
double DeltaAngleRadialAxes
Angle between 2 radial Axes.
void AutoComputeTicksProperties()
Set Range and PolarAxis members value to build axis ticks this function doesn't actually build PolarA...
vtkTypeBool RadialTitleVisibility
Visibility of radial axes and their titles.
void BuildLabelsLog()
Define label values.
bool RadialUnits
Display angle units (degrees) to label radial axes Default is true.
int TickLocation
Describes the tick orientation for the graph elements involved by this property.
void BuildArcTicks()
Build Arc ticks.
void BuildRadialAxes()
Build requested number of radial axes with respect to specified pole.
int GetUse2DMode()
Enable/Disable labels 2D mode (always facing the camera).
void CreateRadialAxes(int axisCount)
Create requested number of type X axes.
double FSign(double, double)
Convenience methods.
double PolarAxisMajorTickSize
Defines the length of the ticks located on the last arc.
double ComputeIdealStep(int subDivsRequired, double rangeLength, int maxSubDivs=1000)
return a step attempting to be as rounded as possible according to input parameters
static double ComputeEllipseAngle(double angleInDegrees, double ratio)
convert section angle to an angle applied to ellipse equation.
virtual void SetPolarAxisTitleTextProperty(vtkTextProperty *p)
Set/Get the polar axis title text property.
bool CheckMembersConsistency()
Check consistency of vtkPolarAxesActor members.
int GetNumberOfPolarAxisTicks()
Set/Get a number of ticks that one would like to display along polar axis NB: it modifies DeltaRangeM...
int RadialAxesOriginToPolarAxis
If On, the radial axes are drawn from the angle of the polarAxis (i.e.
double DistanceLODThreshold
Default is 0.80 This determines at what fraction of camera far clip range, actor is not visible.
double DeltaAngleMajor
Angle between 2 major ticks on the last arc.
double DeltaRangeMinor
Step between 2 minor ticks, in range value (values displayed on the axis).
vtkTypeBool AxisTickVisibility
Hold visibility of major/minor ticks for the polar axis and the last radial axis.
double DeltaRangeMajor
Step between 2 major ticks, in range value (values displayed on the axis).
vtkProperty * GetSecondaryPolarArcsProperty()
Get/Set secondary polar arcs actors property.
double TitleScale
Title scale factor.
int ArcTicksOriginToPolarAxis
If On, the ticks are drawn from the angle of the polarAxis (i.e.
vtkPolyDataMapper * ArcTickPolyDataMapper
vtk object for arc Ticks
void BuildPolarAxisLabelsArcsLog()
Build labels and arcs with log scale axis.
virtual void SetSecondaryRadialAxesTextProperty(vtkTextProperty *p)
Set/Get the secondary radial axes text property.
vtkPolyDataMapper * SecondaryPolarArcsMapper
Structures for secondary polar arcs.
double Ratio
Ratio for elliptical representation of the polar axes actor.
int RenderOverlay(vtkViewport *) override
Draw the polar axes.
vtkActor * SecondaryPolarArcsActor
Structures for secondary polar arcs.
vtkPolyDataMapper * ArcMinorTickPolyDataMapper
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...
void SetCommonAxisAttributes(vtkAxisActor *)
Send attributes which are common to all axes, both polar and radial.
vtkTypeBool PolarTitleVisibility
Visibility of polar axis and its title, labels, ticks (major only)
void SetUse2DMode(int val)
Enable/Disable labels 2D mode (always facing the camera).
vtkTypeBool ArcMinorTickVisibility
virtual void SetMaximumRadius(double)
Set/Get the maximum radius of the polar coordinates.
vtkPolyData * PolarArcs
double FFix(double)
Convenience methods.
virtual void SetPole(double, double, double)
Explicitly specify the coordinate of the pole.
vtkTypeBool DrawPolarArcsGridlines
Visibility of the inner arcs (overridden to 0 if PolarArcsVisibility is set to 0)
int RenderOpaqueGeometry(vtkViewport *) override
Draw the polar axes.
void SetPolarAxisAttributes(vtkAxisActor *)
Set properties specific to PolarAxis.
vtkAxisActor ** RadialAxes
Control variables for non-polar radial axes.
double SmallestVisiblePolarAngle
Smallest radial angle distinguishable from polar axis.
void ReleaseGraphicsResources(vtkWindow *) override
Release any graphics resources that are being consumed by this actor.
double ScreenSize
Text screen size.
double PolarAxisMajorTickThickness
Defines the tickness of the major ticks.
vtkPolyDataMapper * PolarArcsMapper
vtkTypeBool PolarAxisVisibility
Visibility of polar axis and its title, labels, ticks (major only)
int RadialAxisTitleLocation
Define the alignment of the title related to the radial axis.
std::string FindExponentAndAdjustValues(std::list< double > &valuesList)
Find a common exponent for label values.
virtual void SetMaximumAngle(double)
Set/Get the maximum radius of the polar coordinates (in degrees).
vtkTypeBool ArcTickVisibility
Enable / Disable major/minor tick visibility on the last arc displayed.
double LabelScale
Label scale factor.
int RenderTranslucentPolygonalGeometry(vtkViewport *) override
Draw the polar axes.
double PolarAxisTickRatioThickness
Set the ratios between major tick thickness for each ticks location.
vtkTypeBool DrawRadialGridlines
Visibility of the inner axes (overridden to 0 if RadialAxesVisibility is set to 0)
vtkProperty * LastRadialAxisProperty
General properties of last radial axis.
vtkPolyData * SecondaryPolarArcs
Structures for secondary polar arcs.
double MinimumAngle
Minimum polar angle Default: 0.
~vtkPolarAxesActor() override
vtkPoints * ArcMinorTickPts
Keep the arc minor ticks vtkPoints instances.
virtual void SetPolarAxisLabelTextProperty(vtkTextProperty *p)
Set/Get the polar axis labels text property.
vtkTextProperty * LastRadialAxisTextProperty
Text properties of last radial axis.
vtkCamera * Camera
Camera attached to the polar axes system.
bool Log
Enable/Disable log scale Default: 0.
char * RadialAngleFormat
String to format angle values displayed on the radial axes.
void BuildAxes(vtkViewport *)
Build the axes.
virtual void SetPolarArcsProperty(vtkProperty *p)
Get/Set principal polar arc actor property.
map vtkPolyData to graphics primitives
concrete dataset represents vertices, lines, polygons, and triangle strips
Definition vtkPolyData.h:91
double Bounds[6]
Definition vtkProp3D.h:408
represent surface properties of a geometric object
Definition vtkProperty.h:68
a vtkAbstractArray subclass for strings
represent text properties.
record modification and/or execution time
abstract specification for Viewports
Definition vtkViewport.h:56
window superclass for vtkRenderWindow
Definition vtkWindow.h:39
int vtkTypeBool
Definition vtkABI.h:69
#define VTK_MAXIMUM_NUMBER_OF_RADIAL_AXES
int vtkIdType
Definition vtkType.h:332