VTK
vtkPolarAxesActor.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkCubeAxesActor.h
5  Language: C++
6 
7 Copyright (c) 1993-2001 Ken Martin, Will Schroeder, Bill Lorensen
8 All 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 =========================================================================*/
40 #ifndef __vtkPolarAxesActor_h
41 #define __vtkPolarAxesActor_h
42 
43 #define VTK_MAXIMUM_NUMBER_OF_RADIAL_AXES 50
44 #define VTK_DEFAULT_NUMBER_OF_RADIAL_AXES 5
45 #define VTK_MAXIMUM_NUMBER_OF_POLAR_AXIS_TICKS 200
46 #define VTK_POLAR_ARC_RESOLUTION_PER_DEG 0.2
47 
48 #include "vtkRenderingAnnotationModule.h" // For export macro
49 #include "vtkActor.h"
50 
51 class vtkAxisActor;
52 class vtkCamera;
53 class vtkPolyData;
54 class vtkPolyDataMapper;
55 class vtkTextProperty;
56 
57 class VTKRENDERINGANNOTATION_EXPORT vtkPolarAxesActor : public vtkActor
58 {
59 public:
60  vtkTypeMacro(vtkPolarAxesActor,vtkActor);
61  void PrintSelf(ostream& os, vtkIndent indent);
62 
65  static vtkPolarAxesActor *New();
66 
68 
69  virtual int RenderOpaqueGeometry(vtkViewport*);
72 
74 
75  virtual void SetPole( double[3] );
76  virtual void SetPole( double, double, double );
77  vtkGetVector3Macro( Pole, double );
79 
81 
82  virtual void SetNumberOfRadialAxes( vtkIdType );
83  vtkGetMacro( NumberOfRadialAxes, vtkIdType );
85 
87 
89  vtkSetClampMacro( NumberOfPolarAxisTicks, vtkIdType, 0, VTK_MAXIMUM_NUMBER_OF_POLAR_AXIS_TICKS );
90  vtkGetMacro( NumberOfPolarAxisTicks, vtkIdType );
92 
94 
96  vtkSetMacro( AutoSubdividePolarAxis, bool );
97  vtkGetMacro( AutoSubdividePolarAxis, bool );
98  vtkBooleanMacro( AutoSubdividePolarAxis, bool );
100 
102 
103  virtual void SetMaximumRadius( double );
104  vtkGetMacro( MaximumRadius, double );
106 
108 
110  vtkSetMacro( AutoScaleRadius,bool );
111  vtkGetMacro( AutoScaleRadius,bool );
113 
115 
116  virtual void SetMinimumAngle( double );
117  vtkGetMacro( MinimumAngle, double );
119 
121 
122  virtual void SetMaximumAngle( double );
123  vtkGetMacro( MaximumAngle, double );
125 
127 
129  vtkSetClampMacro( SmallestVisiblePolarAngle, double, 0., 5. );
130  vtkGetMacro( SmallestVisiblePolarAngle, double );
132 
134 
135  vtkSetMacro( RadialUnits, bool );
136  vtkGetMacro( RadialUnits, bool );
138 
140 
143  void SetScreenSize( double screenSize );
144  vtkGetMacro( ScreenSize, double );
146 
148 
150  virtual void SetCamera(vtkCamera*);
151  vtkGetObjectMacro( Camera,vtkCamera );
153 
155 
156  vtkSetStringMacro( PolarAxisTitle );
157  vtkGetStringMacro( PolarAxisTitle );
159 
161 
162  vtkSetStringMacro( PolarLabelFormat );
163  vtkGetStringMacro( PolarLabelFormat );
165 
170 
172 
174  vtkSetMacro( EnableDistanceLOD, int );
175  vtkGetMacro( EnableDistanceLOD, int );
177 
179 
180  vtkSetClampMacro( DistanceLODThreshold, double, 0.0, 1.0 );
181  vtkGetMacro( DistanceLODThreshold, double);
183 
185 
187  vtkSetMacro( EnableViewAngleLOD, int );
188  vtkGetMacro( EnableViewAngleLOD, int );
190 
192 
193  vtkSetClampMacro( ViewAngleLODThreshold, double, 0., 1. );
194  vtkGetMacro( ViewAngleLODThreshold, double );
196 
198 
199  vtkSetMacro( PolarAxisVisibility, int );
200  vtkGetMacro( PolarAxisVisibility, int );
201  vtkBooleanMacro( PolarAxisVisibility, int );
203 
205 
206  vtkSetMacro( PolarTitleVisibility, int );
207  vtkGetMacro( PolarTitleVisibility, int );
208  vtkBooleanMacro( PolarTitleVisibility, int );
210 
212 
213  vtkSetMacro( PolarLabelVisibility, int );
214  vtkGetMacro( PolarLabelVisibility, int );
215  vtkBooleanMacro( PolarLabelVisibility, int );
217 
219 
220  vtkSetMacro( PolarTickVisibility, int );
221  vtkGetMacro( PolarTickVisibility, int );
222  vtkBooleanMacro( PolarTickVisibility, int );
224 
226 
227  vtkSetMacro( RadialAxesVisibility, int );
228  vtkGetMacro( RadialAxesVisibility, int );
229  vtkBooleanMacro( RadialAxesVisibility, int );
231 
233 
234  vtkSetMacro( RadialTitleVisibility, int );
235  vtkGetMacro( RadialTitleVisibility, int );
236  vtkBooleanMacro( RadialTitleVisibility, int );
238 
240 
241  vtkSetMacro( PolarArcsVisibility, int );
242  vtkGetMacro( PolarArcsVisibility, int );
243  vtkBooleanMacro( PolarArcsVisibility, int );
245 
247 
248  virtual void SetPolarAxisTitleTextProperty(vtkTextProperty *p);
249  vtkGetObjectMacro(PolarAxisTitleTextProperty,vtkTextProperty);
251 
253 
254  virtual void SetPolarAxisLabelTextProperty(vtkTextProperty *p);
255  vtkGetObjectMacro(PolarAxisLabelTextProperty,vtkTextProperty);
257 
259 
260  virtual void SetPolarAxisProperty(vtkProperty *);
261  vtkProperty* GetPolarAxisProperty();
263 
265 
266  virtual void SetRadialAxesProperty(vtkProperty *);
267  vtkProperty* GetRadialAxesProperty();
269 
271 
272  virtual void SetPolarArcsProperty(vtkProperty *);
273  vtkProperty* GetPolarArcsProperty();
275 
277 
281  vtkSetVector6Macro(Bounds,double);
282  double *GetBounds();
283  void GetBounds(double& xmin, double& xmax, double& ymin, double& ymax,
284  double& zmin, double& zmax);
285  void GetBounds(double bounds[6]);
287 
288 protected:
291 
293  void BuildAxes( vtkViewport * );
294 
296  void CalculateBounds();
297 
299  void SetCommonAxisAttributes( vtkAxisActor* );
300 
302  void CreateRadialAxes();
303 
305  void BuildRadialAxes();
306 
308  void BuildPolarAxisTicks( double );
309 
311  void BuildPolarAxisLabelsArcs();
312 
314 
315  double FFix(double );
316  double FSign(double, double );
318 
321  void AutoScale( vtkViewport* viewport );
322 
324  double Pole[3];
325 
328 
331 
335 
338 
342 
344  double MinimumAngle;
345 
347  double MaximumAngle;
348 
351 
353  double Bounds[6];
354 
356 
361 
364 
367 
370 
372 
377 
380 
384 
388 
392 
396 
398 
404 
406 
410 
413 
415 
417 
419 
423 
426 
429 
431 
433  double TitleScale;
434 
436  double LabelScale;
437 
440 
442  double ScreenSize;
443 
444 private:
445  vtkPolarAxesActor( const vtkPolarAxesActor& ); // Not implemented
446  void operator=( const vtkPolarAxesActor& ); // Not implemented
447 };
448 
449 
450 #endif