Go to the documentation of this file.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
00034
00035
00036
00037
00038 #ifndef NURBS_FITTING_CURVE_2D_ASDM_H
00039 #define NURBS_FITTING_CURVE_2D_ASDM_H
00040
00041 #include <pcl/pcl_exports.h>
00042 #include <pcl/surface/on_nurbs/nurbs_tools.h>
00043 #include <pcl/surface/on_nurbs/nurbs_data.h>
00044 #include <pcl/surface/on_nurbs/nurbs_solve.h>
00045 #include <pcl/surface/on_nurbs/fitting_curve_2d_apdm.h>
00046
00047 namespace pcl
00048 {
00049 namespace on_nurbs
00050 {
00051
00057 class PCL_EXPORTS FittingCurve2dASDM : public FittingCurve2dAPDM
00058 {
00059 public:
00064 FittingCurve2dASDM (int order, NurbsDataCurve2d *data);
00065
00070 FittingCurve2dASDM (NurbsDataCurve2d *data, const ON_NurbsCurve &nc);
00071
00076 virtual void
00077 assemble (const Parameter ¶meter);
00078
00082 virtual double
00083 solve (double damp = 1.0);
00084
00088 virtual double
00089 updateCurve (double damp);
00090
00091 protected:
00092
00094 virtual void
00095 addPointConstraint (const double ¶m, const Eigen::Vector2d &point, const Eigen::Vector2d &normal,
00096 const Eigen::Vector2d &tangent, double rho, double d, double weight, unsigned &row);
00097
00099 virtual void
00100 addCageRegularisation (double weight, unsigned &row, const std::vector<double> &elements, double wConcav = 0.0);
00101
00103 virtual void
00104 assembleInterior (double wInt, double sigma2, double rScale, unsigned &row);
00105
00109 virtual void
00110 assembleClosestPoints (const std::vector<double> &elements, double weight, double sigma2, unsigned &row);
00111
00112 };
00113 }
00114 }
00115
00116 #endif