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
00070 #ifndef __vtkSuperquadric_h
00071 #define __vtkSuperquadric_h
00072
00073 #include "vtkImplicitFunction.h"
00074
00075 #define VTK_MIN_SUPERQUADRIC_THICKNESS 1e-4
00076
00077 class VTK_FILTERING_EXPORT vtkSuperquadric : public vtkImplicitFunction
00078 {
00079 public:
00083 static vtkSuperquadric *New();
00084
00085 vtkTypeMacro(vtkSuperquadric,vtkImplicitFunction);
00086 void PrintSelf(ostream& os, vtkIndent indent);
00087
00088
00089 float EvaluateFunction(float x[3]);
00090 float EvaluateFunction(float x, float y, float z)
00091 {return this->vtkImplicitFunction::EvaluateFunction(x, y, z); } ;
00092 void EvaluateGradient(float x[3], float g[3]);
00093
00095
00096 vtkSetVector3Macro(Center,float);
00097 vtkGetVectorMacro(Center,float,3);
00099
00101
00102 vtkSetVector3Macro(Scale,float);
00103 vtkGetVectorMacro(Scale,float,3);
00105
00107
00109 vtkGetMacro(Thickness,float);
00110 vtkSetClampMacro(Thickness,float,VTK_MIN_SUPERQUADRIC_THICKNESS,1.0);
00112
00114
00116 vtkGetMacro(PhiRoundness,float);
00117 void SetPhiRoundness(float e);
00119
00121
00123 vtkGetMacro(ThetaRoundness,float);
00124 void SetThetaRoundness(float e);
00126
00128
00129 vtkSetMacro(Size,float);
00130 vtkGetMacro(Size,float);
00132
00134
00136 vtkBooleanMacro(Toroidal,int);
00137 vtkGetMacro(Toroidal,int);
00138 vtkSetMacro(Toroidal,int);
00140
00141 protected:
00142 vtkSuperquadric();
00143 ~vtkSuperquadric() {};
00144
00145 int Toroidal;
00146 float Thickness;
00147 float Size;
00148 float PhiRoundness;
00149 float ThetaRoundness;
00150 float Center[3];
00151 float Scale[3];
00152 private:
00153 vtkSuperquadric(const vtkSuperquadric&);
00154 void operator=(const vtkSuperquadric&);
00155 };
00156
00157 #endif
00158
00159