VTK
|
00001 /*========================================================================= 00002 00003 Program: Visualization Toolkit 00004 Module: $RCSfile: vtkQuadRotationalExtrusionFilter.h,v $ 00005 00006 Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen 00007 All rights reserved. 00008 See Copyright.txt or http://www.kitware.com/Copyright.htm for details. 00009 00010 This software is distributed WITHOUT ANY WARRANTY; without even 00011 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 00012 PURPOSE. See the above copyright notice for more information. 00013 00014 =========================================================================*/ 00064 #ifndef __vtkQuadRotationalExtrusionFilter_h 00065 #define __vtkQuadRotationalExtrusionFilter_h 00066 00067 #include "vtkMultiBlockDataSetAlgorithm.h" 00068 #include <vtksys/stl/map> // STL vector need for per block angles 00069 00070 class vtkPoints; 00071 class vtkPointData; 00072 00073 class VTK_GRAPHICS_EXPORT vtkQuadRotationalExtrusionFilter : public vtkMultiBlockDataSetAlgorithm 00074 { 00075 public: 00076 vtkTypeMacro(vtkQuadRotationalExtrusionFilter,vtkMultiBlockDataSetAlgorithm); 00077 void PrintSelf(ostream& os, vtkIndent indent); 00078 00081 static vtkQuadRotationalExtrusionFilter *New(); 00082 00083 //BTX 00084 enum RotationAxis 00085 { 00086 USE_X = 0, 00087 USE_Y = 1, 00088 USE_Z = 2 00089 }; 00090 //ETX 00091 00093 00094 vtkSetClampMacro(Axis, int, 0, 2); 00095 vtkGetMacro(Axis, int); 00096 void SetAxisToX() { this->SetAxis(USE_X); }; 00097 void SetAxisToY() { this->SetAxis(USE_Y); }; 00098 void SetAxisToZ() { this->SetAxis(USE_Z); }; 00100 00102 00104 vtkSetClampMacro(Resolution,int,1,VTK_LARGE_INTEGER); 00105 vtkGetMacro(Resolution,int); 00107 00109 00110 vtkSetMacro(Capping,int); 00111 vtkGetMacro(Capping,int); 00112 vtkBooleanMacro(Capping,int); 00114 00116 00117 vtkSetMacro(DefaultAngle,double); 00118 vtkGetMacro(DefaultAngle,double); 00120 00122 00123 void RemoveAllPerBlockAngles(); 00124 void AddPerBlockAngle(vtkIdType blockId, double angle); 00126 00128 00129 vtkSetMacro(Translation,double); 00130 vtkGetMacro(Translation,double); 00132 00134 00135 vtkSetMacro(DeltaRadius,double); 00136 vtkGetMacro(DeltaRadius,double); 00138 00139 protected: 00140 vtkQuadRotationalExtrusionFilter(); 00141 ~vtkQuadRotationalExtrusionFilter() {}; 00142 00143 int FillInputPortInformation( int , vtkInformation* ); 00144 int RequestData( vtkInformation*, 00145 vtkInformationVector**, 00146 vtkInformationVector* ); 00147 00148 int RotateAroundAxis( double, 00149 vtkIdType, 00150 vtkPoints*, 00151 vtkPoints*, 00152 vtkPointData*, 00153 vtkPointData* ); 00154 int Axis; 00155 int Resolution; 00156 int Capping; 00157 double DefaultAngle; 00158 double Translation; 00159 double DeltaRadius; 00160 00161 //BTX 00162 vtksys_stl::map<vtkIdType,double> PerBlockAngles; 00163 //ETX 00164 00165 private: 00166 vtkQuadRotationalExtrusionFilter(const vtkQuadRotationalExtrusionFilter&); // Not implemented. 00167 void operator=(const vtkQuadRotationalExtrusionFilter&); // Not implemented. 00168 }; 00169 00170 #endif