00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00062 #ifndef __vtkClipHyperOctree_h
00063 #define __vtkClipHyperOctree_h
00064
00065 #include "vtkUnstructuredGridAlgorithm.h"
00066
00067 class vtkImplicitFunction;
00068 class vtkPointLocator;
00069 class vtkHyperOctreeCursor;
00070 class vtkHyperOctree;
00071 class vtkUnsignedCharArray;
00072 class vtkIdTypeArray;
00073 class vtkCellArray;
00074 class vtkCellData;
00075 class vtkPointData;
00076 class vtkOrderedTriangulator;
00077 class vtkDoubleArray;
00078 class vtkTetra;
00079 class vtkPoints;
00080 class vtkPolygon;
00081 class vtkHyperOctreeClipCutPointsGrabber;
00082
00083 class VTK_GRAPHICS_EXPORT vtkClipHyperOctree : public vtkUnstructuredGridAlgorithm
00084 {
00085 public:
00086 vtkTypeRevisionMacro(vtkClipHyperOctree,vtkUnstructuredGridAlgorithm);
00087 void PrintSelf(ostream& os, vtkIndent indent);
00088
00091 static vtkClipHyperOctree *New();
00092
00094
00097 vtkSetMacro(Value,double);
00098 vtkGetMacro(Value,double);
00100
00102
00107 vtkSetMacro(InsideOut,int);
00108 vtkGetMacro(InsideOut,int);
00109 vtkBooleanMacro(InsideOut,int);
00111
00113
00116 virtual void SetClipFunction(vtkImplicitFunction*);
00117 vtkGetObjectMacro(ClipFunction,vtkImplicitFunction);
00119
00121
00125 vtkSetMacro(GenerateClipScalars,int);
00126 vtkGetMacro(GenerateClipScalars,int);
00127 vtkBooleanMacro(GenerateClipScalars,int);
00129
00131
00133 vtkSetMacro(GenerateClippedOutput,int);
00134 vtkGetMacro(GenerateClippedOutput,int);
00135 vtkBooleanMacro(GenerateClippedOutput,int);
00137
00139 vtkUnstructuredGrid *GetClippedOutput();
00140
00142
00144 void SetLocator(vtkPointLocator *locator);
00145 vtkGetObjectMacro(Locator,vtkPointLocator);
00147
00150 void CreateDefaultLocator();
00151
00153 unsigned long GetMTime();
00154
00155 protected:
00156 vtkClipHyperOctree(vtkImplicitFunction *cf=NULL);
00157 ~vtkClipHyperOctree();
00158
00159 virtual int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *);
00160
00162
00164 void ClipNode(vtkHyperOctreeCursor *cursor,
00165 int level,
00166 double bounds[6]);
00168
00169 virtual int FillInputPortInformation(int port, vtkInformation *info);
00170 vtkImplicitFunction *ClipFunction;
00171
00172 vtkPointLocator *Locator;
00173 vtkPointLocator *Locator2;
00174
00175 int InsideOut;
00176 double Value;
00177 int GenerateClipScalars;
00178
00179 int GenerateClippedOutput;
00180
00181 vtkHyperOctree *Input;
00182 vtkUnstructuredGrid *Output;
00183 vtkUnstructuredGrid *ClippedOutput;
00184
00185 vtkUnsignedCharArray *Types[2];
00186 vtkIdTypeArray *Locs[2];
00187 vtkCellArray *Conn[2];
00188 vtkCellData *InCD;
00189 vtkCellData *OutCD[2];
00190 vtkPointData *OutPD[2];
00191 vtkOrderedTriangulator *Triangulator;
00192
00193 vtkHyperOctreeCursor *Sibling;
00194
00195 vtkDoubleArray *CellScalars;
00196 vtkTetra *Tetra;
00197 vtkDoubleArray *TetScalars;
00198
00199 vtkPoints *Pts;
00200 vtkPolygon *Polygon;
00201
00202 vtkIdType CellTypeCounter[65536];
00203 vtkIdType TotalCounter;
00204 vtkIdType TemplateCounter;
00205
00206
00207 vtkHyperOctreeClipCutPointsGrabber *Grabber;
00208
00209 private:
00210 vtkClipHyperOctree(const vtkClipHyperOctree&);
00211 void operator=(const vtkClipHyperOctree&);
00212 };
00213
00214 #endif