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 _IMPLICITUTILS_H
00034 #define _IMPLICITUTILS_H
00035
00036
00037 #include "BaryCoordSystem.h"
00038 #include "PointCloud.h"
00039 #include <vector>
00040
00041
00042 namespace Go {
00045
00046
00047
00048 class BernsteinPoly;
00049 class BernsteinMulti;
00050 class BernsteinTriangularPoly;
00051 class BernsteinTetrahedralPoly;
00052 class SplineCurve;
00053 class SplineSurface;
00054 class BoundingBox;
00055
00056
00058 void create_bary_coord_system2D(const SplineCurve& curve,
00059 BaryCoordSystem2D& bc);
00060
00062 void create_bary_coord_system3D(const SplineCurve& curve,
00063 BaryCoordSystem3D& bc);
00064
00066 void create_bary_coord_system3D(const SplineSurface& surface,
00067 BaryCoordSystem3D& bc);
00068
00070 void create_bary_coord_system3D(const PointCloud3D& cloud,
00071 BaryCoordSystem3D& bc);
00072
00074 void create_bary_coord_system3D(const BoundingBox& box,
00075 BaryCoordSystem3D& bc);
00076
00079 void cart_to_bary(const SplineCurve& cv, const BaryCoordSystem2D& bc,
00080 SplineCurve& cv_bc);
00081
00084 void cart_to_bary(const SplineCurve& cv, const BaryCoordSystem3D& bc,
00085 SplineCurve& cv_bc);
00086
00089 void cart_to_bary(const SplineSurface& sf, const BaryCoordSystem3D& bc,
00090 SplineSurface& sf_bc);
00091
00094 void cart_to_bary(const PointCloud3D& cloud, const BaryCoordSystem3D& bc,
00095 PointCloud4D& cloud_bc);
00096
00098 void make_matrix(const SplineCurve& curve, int deg,
00099 std::vector<std::vector<double> >& mat);
00100
00102 void make_matrix(const SplineSurface& surf, int deg,
00103 std::vector<std::vector<double> >& mat);
00104
00106 void make_matrix(const PointCloud4D& cloud, int deg,
00107 std::vector<std::vector<double> >& mat);
00108
00113 void make_implicit_svd(std::vector<std::vector<double> >& mat,
00114 std::vector<double>& b, double& sigma_min);
00115
00119 void make_implicit_gauss(std::vector<std::vector<double> >& mat,
00120 std::vector<double>& b);
00121
00122
00124 }
00125
00126
00127 #endif // _IMPLICITUTILS_H
00128
00129