00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00039 #ifndef __vtkGenericCellTessellator_h
00040 #define __vtkGenericCellTessellator_h
00041
00042 #include "vtkObject.h"
00043
00044 class vtkCellArray;
00045 class vtkDoubleArray;
00046 class vtkCollection;
00047 class vtkGenericAttributeCollection;
00048 class vtkGenericAdaptorCell;
00049 class vtkGenericCellIterator;
00050 class vtkPointData;
00051 class vtkGenericDataSet;
00052
00053
00054
00055
00056 class VTK_FILTERING_EXPORT vtkGenericCellTessellator : public vtkObject
00057 {
00058 public:
00059 vtkTypeMacro(vtkGenericCellTessellator,vtkObject);
00060 void PrintSelf(ostream& os, vtkIndent indent);
00061
00063
00070 virtual void TessellateFace(vtkGenericAdaptorCell *cell,
00071 vtkGenericAttributeCollection *att,
00072 vtkIdType index,
00073 vtkDoubleArray *points,
00074 vtkCellArray *cellArray,
00075 vtkPointData *internalPd)=0;
00077
00079
00085 virtual void Tessellate(vtkGenericAdaptorCell *cell,
00086 vtkGenericAttributeCollection *att,
00087 vtkDoubleArray *points,
00088 vtkCellArray *cellArray,
00089 vtkPointData *internalPd )=0;
00091
00093
00099 virtual void Triangulate(vtkGenericAdaptorCell *cell,
00100 vtkGenericAttributeCollection *att,
00101 vtkDoubleArray *points,
00102 vtkCellArray *cellArray,
00103 vtkPointData *internalPd)=0;
00105
00107
00110 virtual void SetErrorMetrics(vtkCollection *someErrorMetrics);
00111 vtkGetObjectMacro(ErrorMetrics,vtkCollection);
00113
00115 virtual void Initialize(vtkGenericDataSet *ds)=0;
00116
00119 void InitErrorMetrics(vtkGenericDataSet *ds);
00120
00122
00123 vtkGetMacro(Measurement,int);
00124 vtkSetMacro(Measurement,int);
00126
00130 void GetMaxErrors(double *errors);
00131
00132 protected:
00133 vtkGenericCellTessellator();
00134 ~vtkGenericCellTessellator();
00135
00137
00149 int RequiresEdgeSubdivision(double *left, double *mid, double *right,
00150 double alpha);
00152
00153
00155
00164 virtual void UpdateMaxError(double *leftPoint, double *midPoint,
00165 double *rightPoint, double alpha);
00167
00170 void ResetMaxErrors();
00171
00173 vtkCollection *ErrorMetrics;
00174
00178 void SetGenericCell(vtkGenericAdaptorCell *cell);
00179
00180 vtkGenericDataSet *DataSet;
00181
00182 int Measurement;
00183 double *MaxErrors;
00184
00185 int MaxErrorsCapacity;
00186
00187 private:
00188 vtkGenericCellTessellator(const vtkGenericCellTessellator&);
00189 void operator=(const vtkGenericCellTessellator&);
00190 };
00191
00192 #endif