00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015 #ifndef __vtkDataSetSubdivisionAlgorithm_h
00016 #define __vtkDataSetSubdivisionAlgorithm_h
00017
00041 #include "vtkSubdivisionAlgorithm.h"
00042
00043 class vtkCell;
00044 class vtkDataSet;
00045
00046 class VTK_EXPORT vtkDataSetSubdivisionAlgorithm : public vtkSubdivisionAlgorithm
00047 {
00048 public:
00049 vtkTypeRevisionMacro(vtkDataSetSubdivisionAlgorithm,vtkSubdivisionAlgorithm);
00050 static vtkDataSetSubdivisionAlgorithm* New();
00051 virtual void PrintSelf( ostream& os, vtkIndent indent );
00052
00053 virtual void SetMesh( vtkDataSet* );
00054 vtkDataSet* GetMesh();
00055 const vtkDataSet* GetMesh() const;
00056
00057 virtual void SetCellId( vtkIdType cell );
00058 vtkIdType GetCellId() const;
00059
00060 vtkIdType& GetCellId();
00061
00062 vtkCell* GetCell();
00063 const vtkCell* GetCell() const;
00064
00065 virtual bool EvaluateEdge( const double* p0, double* midpt, const double* p1, int field_start );
00066
00096 double* EvaluateFields( double* vertex, double* weights, int field_start );
00097
00099
00102 void EvaluatePointDataField( double* result, double* weights, int field );
00103 void EvaluateCellDataField( double* result, double* weights, int field );
00105
00107
00109 vtkSetMacro(ChordError2,double);
00110 vtkGetMacro(ChordError2,double);
00112
00114
00118 virtual void SetFieldError2( int s, double err );
00119 double GetFieldError2( int s ) const;
00121
00125 virtual void ResetFieldError2();
00126
00128
00131 vtkGetMacro(ActiveFieldCriteria,int);
00132 int GetActiveFieldCriteria() const { return this->ActiveFieldCriteria; }
00134
00135 protected:
00136 vtkDataSetSubdivisionAlgorithm();
00137 virtual ~vtkDataSetSubdivisionAlgorithm();
00138
00139 vtkDataSet* CurrentMesh;
00140 vtkIdType CurrentCellId;
00141 vtkCell* CurrentCellData;
00142
00143 double ChordError2;
00144 double* FieldError2;
00145 int FieldError2Length;
00146 int FieldError2Capacity;
00147 int ActiveFieldCriteria;
00148
00149 private:
00150 vtkDataSetSubdivisionAlgorithm( const vtkDataSetSubdivisionAlgorithm& );
00151 void operator = ( const vtkDataSetSubdivisionAlgorithm& );
00152
00153 };
00154
00155
00156
00157 inline vtkIdType& vtkDataSetSubdivisionAlgorithm::GetCellId() { return this->CurrentCellId; }
00158 inline vtkIdType vtkDataSetSubdivisionAlgorithm::GetCellId() const { return this->CurrentCellId; }
00159
00160 inline vtkDataSet* vtkDataSetSubdivisionAlgorithm::GetMesh() { return this->CurrentMesh; }
00161 inline const vtkDataSet* vtkDataSetSubdivisionAlgorithm::GetMesh() const { return this->CurrentMesh; }
00162
00163 inline vtkCell* vtkDataSetSubdivisionAlgorithm::GetCell() { return this->CurrentCellData; }
00164 inline const vtkCell* vtkDataSetSubdivisionAlgorithm::GetCell() const { return this->CurrentCellData; }
00165
00166
00167
00168 #endif // __vtkDataSetSubdivisionAlgorithm_h