Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members   File Members  

gunu_interpolate.h

Go to the documentation of this file.
00001 /* LIBGUL - Geometry Utility Library
00002  * Copyright (C) 1998-1999 Norbert Irmer
00003  *
00004  * This library is free software; you can redistribute it and/or
00005  * modify it under the terms of the GNU Library General Public
00006  * License as published by the Free Software Foundation; either
00007  * version 2 of the License, or (at your option) any later version.
00008  *
00009  * This library is distributed in the hope that it will be useful,
00010  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00011  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00012  * Library General Public License for more details.
00013  *
00014  * You should have received a copy of the GNU Library General Public
00015  * License along with this library; if not, write to the
00016  * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
00017  * Boston, MA 02111-1307, USA.
00018  */
00019 
00020 #ifndef GUNU_INTERPOLATE_H
00021 #define GUNU_INTERPOLATE_H
00022 
00023 namespace gunu {
00024 
00025 /*----------------------------------------------------------------------
00026   Calculates the control points of a cubic curve, interpolating
00027   the data points Q0,..,Qn. (see "The NURBS Book")
00028   The knot vector U must be computed by the caller.
00029   The first and last two control points P0,P1,Pn+1,Pn+2, depend
00030   on the directions & magnitudes of the curve endpoint derivatives,
00031   and must be filled in by the caller too.
00032  ----------------------------------------------------------------------*/
00033 template< class T >
00034 GULAPI void CubicCurveInterpolation( int n, Ptr<point<T> > Q, Ptr<T> U,
00035                                   Ptr<point<T> > P );
00036 
00037 /*-----------------------------------------------------------------------
00038   Creates a non-homogeneous NURBS curve, which interpolates a set of 'n+1'
00039   data points 'Q' with "Local Bicubic Interpolation" (see "The NURBS Book").
00040   For each data point two control points are generated. Storage for
00041   the output arrays 'U' and 'P' must be reserved by the caller:
00042 
00043   For P: (n+1)*2
00044   For U: ((n+1)*2 + 4)
00045 -------------------------------------------------------------------- */  
00046 template< class K >
00047 GULAPI void CubicLocalCurveInterpolation( 
00048                             int n, Ptr< point<K> > Q, bool cornerflag,
00049                             Ptr<K> U, Ptr< point<K> > P );
00050 
00051 /*-----------------------------------------------------------------------
00052   Creates a non-homogeneous NURBS surface, which interpolates a net of 
00053   'm+1' * 'n+1' data points 'Q' with "Local Bicubic Interpolation" 
00054   (see "The NURBS Book"). For each data point two control points are generated. Storage for
00055   the output arrays 'U','V' and 'controlPoints' must be reserved by the caller:
00056 
00057   For controlPoints: (m+1)*(n+1)*2*sizeof(NUPoint)  
00058   For U: ((n+1)*2 + 4)
00059   For V: ((m+1)*2 + 4)
00060 -------------------------------------------------------------------- */  
00061 template< class T, class HP >
00062 GULAPI void CubicLocalSurfaceInterpolation( 
00063            int n, int m, Ptr< Ptr< point<T> > > Q, bool cornerflag,
00064            Ptr<T> U, Ptr<T> V, Ptr< Ptr< HP > > controlPoints );
00065 
00066 }
00067 
00068 #endif

Generated on Mon Jan 21 04:17:38 2002 for GUL 0.6 - Geometry Utility Library by doxygen1.2.13.1 written by Dimitri van Heesch, © 1997-2001