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 _GOCURVECREATORS_H
00034 #define _GOCURVECREATORS_H
00035
00036 #include "ParamCurve.h"
00037 #include "CurveOnSurface.h"
00038 #include "SplineSurface.h"
00039
00040
00041 namespace Go
00042 {
00045
00046
00047
00048 class SplineCurve;
00049
00053 namespace CurveCreators
00054 {
00057
00058
00062
00073 SplineCurve* multCurveWithFunction(const SplineCurve& alpha,
00074 const SplineCurve& f);
00075
00089 SplineCurve* blend(const SplineCurve& alpha_1, const SplineCurve& f_1,
00090 const SplineCurve& alpha_2, const SplineCurve& f_2);
00091
00094
00121 SplineCurve* approxCurves(boost::shared_ptr<SplineCurve>* first_crv,
00122 boost::shared_ptr<SplineCurve>* last_crv,
00123 const std::vector<Point>& start_pt,
00124 const std::vector<Point>& end_pt,
00125 double approxtol,
00126 double& maxdist,
00127 int max_iter = 5);
00128
00131
00155 SplineCurve* projectSpaceCurve(boost::shared_ptr<SplineCurve>& space_cv,
00156 boost::shared_ptr<SplineSurface>& surf,
00157 boost::shared_ptr<Point>& start_par_pt,
00158 boost::shared_ptr<Point>& end_par_pt,
00159 double epsge,
00160 const RectDomain* domain_of_interest = NULL);
00161
00163
00173 SplineCurve* liftParameterCurve(boost::shared_ptr<SplineCurve>& parameter_cv,
00174 boost::shared_ptr<SplineSurface>& surf,
00175 double epsge);
00176
00177
00178
00180
00189 SplineCurve* createCircle(Point center, Point axis, Point normal, double radius);
00190
00192 boost::shared_ptr<Go::SplineCurve>
00193 insertParamDomain(const Go::SplineCurve& cv_1d, double knot_tol = 1e-08);
00194
00196 }
00199
00200
00201
00203 }
00204
00205
00206 #endif // _GOCURVECREATORS_H
00207
00208