00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033 #ifndef _IMPLICITIZEPOINTCLOUDALGO_H
00034 #define _IMPLICITIZEPOINTCLOUDALGO_H
00035
00036
00037 #include "BernsteinTetrahedralPoly.h"
00038 #include "PointCloud.h"
00039 #include "BaryCoordSystem.h"
00040
00041
00042 namespace Go {
00045
00046
00047
00067 class ImplicitizePointCloudAlgo {
00068 public:
00070 ImplicitizePointCloudAlgo() : tol_(3.0e-15) { }
00073 explicit ImplicitizePointCloudAlgo(int deg)
00074 : deg_(deg), tol_(3.0e-15) { }
00078 ImplicitizePointCloudAlgo(const PointCloud3D& cloud, int deg)
00079 : cloud_(cloud), deg_(deg), tol_(3.0e-15) { }
00080
00083 void usePointCloud(const PointCloud3D& cloud)
00084 { cloud_ = cloud; }
00085
00088 void setDegree(int deg)
00089 { deg_ = deg; }
00090
00093 void setTolerance(double tol)
00094 { tol_ = tol; }
00095
00098 void perform();
00099
00105 void getResultData(BernsteinTetrahedralPoly& implicit,
00106 BaryCoordSystem3D& bc, double& sigma_min)
00107 {
00108 implicit = implicit_;
00109 bc = bc_;
00110 sigma_min = sigma_min_;
00111 }
00112
00113 private:
00114 PointCloud3D cloud_;
00115 BernsteinTetrahedralPoly implicit_;
00116 BaryCoordSystem3D bc_;
00117 int deg_;
00118 double tol_;
00119 double sigma_min_;
00120
00121 };
00122
00123
00125 }
00126
00127
00128 #endif // _IMPLICITIZEPOINTCLOUDALGO_H
00129
00130