Main Page Class Hierarchy Alphabetical List Compound List File List Compound Members File Members Related Pages
Graphics/vtkDelaunay3D.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00109 #ifndef __vtkDelaunay3D_h
00110 #define __vtkDelaunay3D_h
00111
00112 #include "vtkUnstructuredGridSource.h"
00113
00114 class vtkIdList;
00115 class vtkPointLocator;
00116 class vtkPointSet;
00117 class vtkPoints;
00118 class vtkTetraArray;
00119
00120 class VTK_GRAPHICS_EXPORT vtkDelaunay3D : public vtkUnstructuredGridSource
00121 {
00122 public:
00123 vtkTypeRevisionMacro(vtkDelaunay3D,vtkUnstructuredGridSource);
00124 void PrintSelf(ostream& os, vtkIndent indent);
00125
00128 static vtkDelaunay3D *New();
00129
00131
00135 vtkSetClampMacro(Alpha,float,0.0,VTK_LARGE_FLOAT);
00136 vtkGetMacro(Alpha,float);
00138
00140
00143 vtkSetClampMacro(Tolerance,float,0.0,1.0);
00144 vtkGetMacro(Tolerance,float);
00146
00148
00150 vtkSetClampMacro(Offset,float,2.5,VTK_LARGE_FLOAT);
00151 vtkGetMacro(Offset,float);
00153
00155
00159 vtkSetMacro(BoundingTriangulation,int);
00160 vtkGetMacro(BoundingTriangulation,int);
00161 vtkBooleanMacro(BoundingTriangulation,int);
00163
00165
00167 void SetLocator(vtkPointLocator *locator);
00168 vtkGetObjectMacro(Locator,vtkPointLocator);
00170
00173 void CreateDefaultLocator();
00174
00176
00186 vtkUnstructuredGrid *InitPointInsertion(float center[3], float length,
00187 vtkIdType numPts, vtkPoints* &pts);
00189
00191
00200 void InsertPoint(vtkUnstructuredGrid *Mesh, vtkPoints *points,
00201 vtkIdType id, float x[3], vtkIdList *holeTetras);
00203
00208 void EndPointInsertion();
00209
00211 unsigned long GetMTime();
00212
00214
00215 virtual void SetInput(vtkPointSet *input);
00216 vtkPointSet *GetInput();
00218
00219 protected:
00220 vtkDelaunay3D();
00221 ~vtkDelaunay3D();
00222
00223 void Execute();
00224
00225 float Alpha;
00226 float Tolerance;
00227 int BoundingTriangulation;
00228 float Offset;
00229
00230 vtkPointLocator *Locator;
00231
00232 vtkTetraArray *TetraArray;
00233 int FindTetra(vtkUnstructuredGrid *Mesh, double x[3], vtkIdType tetId,
00234 int depth);
00235 int InSphere(double x[3], vtkIdType tetraId);
00236 void InsertTetra(vtkUnstructuredGrid *Mesh, vtkPoints *pts,
00237 vtkIdType tetraId);
00238
00239 int NumberOfDuplicatePoints;
00240 int NumberOfDegeneracies;
00241
00242
00243 int *References;
00244
00245 vtkIdType FindEnclosingFaces(float x[3], vtkUnstructuredGrid *Mesh,
00246 vtkIdList *tetras, vtkIdList *faces,
00247 vtkPointLocator *Locator);
00248
00249 private:
00250 vtkIdList *Tetras;
00251 vtkIdList *Faces;
00252 vtkIdList *BoundaryPts;
00253 vtkIdList *CheckedTetras;
00254 vtkIdList *NeiTetras;
00255
00256 private:
00257 vtkDelaunay3D(const vtkDelaunay3D&);
00258 void operator=(const vtkDelaunay3D&);
00259 };
00260
00261 #endif
00262
00263