CurveCreators.h

00001 //===========================================================================
00002 // GoTools - SINTEF Geometry Tools version 1.1
00003 //
00004 // GoTools module: CORE
00005 //
00006 // Copyright (C) 2000-2007 SINTEF ICT, Applied Mathematics, Norway.
00007 //
00008 // This program is free software; you can redistribute it and/or          
00009 // modify it under the terms of the GNU General Public License            
00010 // as published by the Free Software Foundation version 2 of the License. 
00011 //
00012 // This program is distributed in the hope that it will be useful,        
00013 // but WITHOUT ANY WARRANTY; without even the implied warranty of         
00014 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the          
00015 // GNU General Public License for more details.                           
00016 //
00017 // You should have received a copy of the GNU General Public License      
00018 // along with this program; if not, write to the Free Software            
00019 // Foundation, Inc.,                                                      
00020 // 59 Temple Place - Suite 330,                                           
00021 // Boston, MA  02111-1307, USA.                                           
00022 //
00023 // Contact information: E-mail: tor.dokken@sintef.no                      
00024 // SINTEF ICT, Department of Applied Mathematics,                         
00025 // P.O. Box 124 Blindern,                                                 
00026 // 0314 Oslo, Norway.                                                     
00027 //
00028 // Other licenses are also available for this software, notably licenses
00029 // for:
00030 // - Building commercial software.                                        
00031 // - Building software whose source code you wish to keep private.        
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     // Assuming dim = 3 (or 2?)
00178     // Axis defines the start-/end-point of the curve.
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 } // namespace go
00204 
00205 
00206 #endif // _GOCURVECREATORS_H
00207 
00208 

Generated on Mon Jun 11 14:48:18 2007 for GoTools Core Library by  doxygen 1.5.1