00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00082 #ifndef __vtkSuperquadricSource_h
00083 #define __vtkSuperquadricSource_h
00084
00085 #include "vtkPolyDataSource.h"
00086
00087 #define VTK_MAX_SUPERQUADRIC_RESOLUTION 1024
00088 #define VTK_MIN_SUPERQUADRIC_THICKNESS 1e-4
00089 #define VTK_MIN_SUPERQUADRIC_ROUNDNESS 1e-24
00090
00091 class VTK_EXPORT vtkSuperquadricSource : public vtkPolyDataSource
00092 {
00093 public:
00096 static vtkSuperquadricSource *New();
00097
00098 vtkTypeMacro(vtkSuperquadricSource,vtkPolyDataSource);
00099 void PrintSelf(ostream& os, vtkIndent indent);
00100
00102 vtkSetVector3Macro(Center,float);
00103 vtkGetVectorMacro(Center,float,3);
00104
00106 vtkSetVector3Macro(Scale,float);
00107 vtkGetVectorMacro(Scale,float,3);
00108
00110 vtkGetMacro(ThetaResolution,int);
00111 void SetThetaResolution(int i);
00112
00114 vtkGetMacro(PhiResolution,int);
00115 void SetPhiResolution(int i);
00116
00119 vtkGetMacro(Thickness,float);
00120 vtkSetClampMacro(Thickness,float,VTK_MIN_SUPERQUADRIC_THICKNESS,1.0);
00121
00124 vtkGetMacro(PhiRoundness,float);
00125 void SetPhiRoundness(float e);
00126
00129 vtkGetMacro(ThetaRoundness,float);
00130 void SetThetaRoundness(float e);
00131
00133 vtkSetMacro(Size,float);
00134 vtkGetMacro(Size,float);
00135
00138 vtkBooleanMacro(Toroidal,int);
00139 vtkGetMacro(Toroidal,int);
00140 vtkSetMacro(Toroidal,int);
00141
00142 protected:
00143 vtkSuperquadricSource(int res=16);
00144 ~vtkSuperquadricSource() {};
00145 vtkSuperquadricSource(const vtkSuperquadricSource&) {};
00146 void operator=(const vtkSuperquadricSource&) {};
00147
00148 int Toroidal;
00149 float Thickness;
00150 float Size;
00151 float PhiRoundness;
00152 float ThetaRoundness;
00153 void Execute();
00154 float Center[3];
00155 float Scale[3];
00156 int ThetaResolution;
00157 int PhiResolution;
00158
00159 };
00160
00161 #endif
00162
00163