00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00027 #ifndef __vtkHyperOctreeFractalSource_h
00028 #define __vtkHyperOctreeFractalSource_h
00029
00030 #include "vtkHyperOctreeAlgorithm.h"
00031
00032 class vtkImplicitFunction;
00033
00034 class VTK_GRAPHICS_EXPORT vtkHyperOctreeFractalSource : public vtkHyperOctreeAlgorithm
00035 {
00036 public:
00037 vtkTypeMacro(vtkHyperOctreeFractalSource,vtkHyperOctreeAlgorithm);
00038 void PrintSelf(ostream& os, vtkIndent indent);
00039
00040 static vtkHyperOctreeFractalSource *New();
00041
00044 int GetMaximumLevel();
00045
00050 void SetMaximumLevel(int levels);
00051
00053
00055 void SetMinimumLevel(int level);
00056 int GetMinimumLevel();
00058
00059
00060
00061
00063
00066 void SetProjectionAxes(int x, int y, int z);
00067 void SetProjectionAxes(int a[3]) {this->SetProjectionAxes(a[0],a[1],a[2]);}
00068 vtkGetVector3Macro(ProjectionAxes, int);
00070
00072
00074 vtkSetVector4Macro(OriginCX, double);
00075 vtkGetVector4Macro(OriginCX, double);
00077
00079
00082 vtkSetVector4Macro(SizeCX, double);
00083 vtkGetVector4Macro(SizeCX, double);
00085
00087
00088 vtkSetClampMacro(MaximumNumberOfIterations, unsigned short, 1, 255);
00089 vtkGetMacro(MaximumNumberOfIterations, unsigned char);
00091
00093
00094 vtkSetClampMacro(Dimension, int, 2, 3);
00095 vtkGetMacro(Dimension, int);
00097
00099
00102 vtkSetMacro(SpanThreshold, double);
00103 vtkGetMacro(SpanThreshold, double);
00105
00106 protected:
00107 vtkHyperOctreeFractalSource();
00108 ~vtkHyperOctreeFractalSource();
00109
00110 int RequestInformation (vtkInformation * vtkNotUsed(request),
00111 vtkInformationVector ** vtkNotUsed( inputVector ),
00112 vtkInformationVector *outputVector);
00113
00114 virtual int RequestData(vtkInformation *, vtkInformationVector **,
00115 vtkInformationVector *);
00116
00117 void Subdivide(vtkHyperOctreeCursor *cursor,
00118 int level, vtkHyperOctree *output,
00119 double* origin, double* size,
00120 float* cornerVals);
00121
00122 int MaximumLevel;
00123 int MinimumLevel;
00124 int Dimension;
00125
00126 int ProjectionAxes[3];
00127
00128 unsigned char MaximumNumberOfIterations;
00129
00130
00131 double OriginCX[4];
00132
00133
00134
00135 double SizeCX[4];
00136
00137 float EvaluateWorldPoint(double p[3]);
00138 float EvaluateSet(double p[4]);
00139
00140 double Origin[3];
00141 double Size[3];
00142
00143 double SpanThreshold;
00144
00145 private:
00146 vtkHyperOctreeFractalSource(const vtkHyperOctreeFractalSource&);
00147 void operator=(const vtkHyperOctreeFractalSource&);
00148 };
00149
00150 #endif