00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00059
#ifndef __vtkSuperquadricSource_h
00060
#define __vtkSuperquadricSource_h
00061
00062
#include "vtkPolyDataSource.h"
00063
00064 #define VTK_MAX_SUPERQUADRIC_RESOLUTION 1024
00065 #define VTK_MIN_SUPERQUADRIC_THICKNESS 1e-4
00066 #define VTK_MIN_SUPERQUADRIC_ROUNDNESS 1e-24
00067
00068 class VTK_GRAPHICS_EXPORT vtkSuperquadricSource :
public vtkPolyDataSource
00069 {
00070
public:
00073
static vtkSuperquadricSource *
New();
00074
00075 vtkTypeRevisionMacro(vtkSuperquadricSource,
vtkPolyDataSource);
00076
void PrintSelf(ostream& os,
vtkIndent indent);
00077
00079
00080 vtkSetVector3Macro(Center,
float);
00081 vtkGetVectorMacro(Center,
float,3);
00083
00085
00086 vtkSetVector3Macro(Scale,
float);
00087 vtkGetVectorMacro(Scale,
float,3);
00089
00091
00092 vtkGetMacro(ThetaResolution,
int);
00093
void SetThetaResolution(
int i);
00095
00097
00098 vtkGetMacro(PhiResolution,
int);
00099
void SetPhiResolution(
int i);
00101
00103
00105 vtkGetMacro(Thickness,
float);
00106 vtkSetClampMacro(Thickness,
float,VTK_MIN_SUPERQUADRIC_THICKNESS,1.0);
00108
00110
00112 vtkGetMacro(PhiRoundness,
float);
00113
void SetPhiRoundness(
float e);
00115
00117
00119 vtkGetMacro(ThetaRoundness,
float);
00120
void SetThetaRoundness(
float e);
00122
00124
00125 vtkSetMacro(Size,
float);
00126 vtkGetMacro(Size,
float);
00128
00130
00132 vtkBooleanMacro(Toroidal,
int);
00133 vtkGetMacro(Toroidal,
int);
00134 vtkSetMacro(Toroidal,
int);
00136
00137
protected:
00138 vtkSuperquadricSource(
int res=16);
00139 ~vtkSuperquadricSource() {};
00140
00141 int Toroidal;
00142 float Thickness;
00143 float Size;
00144 float PhiRoundness;
00145 float ThetaRoundness;
00146
void Execute();
00147 float Center[3];
00148 float Scale[3];
00149 int ThetaResolution;
00150 int PhiResolution;
00151
00152
private:
00153 vtkSuperquadricSource(
const vtkSuperquadricSource&);
00154
void operator=(
const vtkSuperquadricSource&);
00155 };
00156
00157
#endif
00158
00159