00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00030 #ifndef __vtkGeometricErrorMetric_h
00031 #define __vtkGeometricErrorMetric_h
00032
00033 #include "vtkGenericSubdivisionErrorMetric.h"
00034
00035 class vtkGenericDataSet;
00036
00037 class VTK_FILTERING_EXPORT vtkGeometricErrorMetric : public vtkGenericSubdivisionErrorMetric
00038 {
00039 public:
00042 static vtkGeometricErrorMetric *New();
00043
00045
00046 vtkTypeRevisionMacro(vtkGeometricErrorMetric,vtkGenericSubdivisionErrorMetric);
00047 void PrintSelf(ostream& os, vtkIndent indent);
00049
00051
00054 vtkGetMacro(AbsoluteGeometricTolerance, double);
00056
00063 void SetAbsoluteGeometricTolerance(double value);
00064
00066
00070 void SetRelativeGeometricTolerance(double value,
00071 vtkGenericDataSet *ds);
00073
00075
00088 int RequiresEdgeSubdivision(double *leftPoint, double *midPoint, double *rightPoint,
00089 double alpha);
00091
00093
00102 double GetError(double *leftPoint, double *midPoint,
00103 double *rightPoint, double alpha);
00105
00107 int GetRelative();
00108
00109 protected:
00110 vtkGeometricErrorMetric();
00111 virtual ~vtkGeometricErrorMetric();
00112
00114
00117 double Distance2LinePoint(double x[3],
00118 double y[3],
00119 double z[3]);
00121
00122 double AbsoluteGeometricTolerance;
00123 double SmallestSize;
00124 int Relative;
00125
00126 private:
00127 vtkGeometricErrorMetric(const vtkGeometricErrorMetric&);
00128 void operator=(const vtkGeometricErrorMetric&);
00129 };
00130
00131 #endif