Changeset 2808 in Sophya for trunk/SophyaLib/NTools/cspline.cc


Ignore:
Timestamp:
Jun 14, 2005, 1:25:05 PM (20 years ago)
Author:
ansari
Message:

MAJ documentation - Reza 14/6/2005

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/SophyaLib/NTools/cspline.cc

    r2615 r2808  
    1414#include "cspline.h"
    1515
    16 //++
    17 // Class        CSpline
    18 // Lib  Outils++
    19 // include      cspline.h
    20 //
    21 //      Classe de spline 1D
    22 //--
    23 
    24 //++
    25 // Titre        Constructeurs
    26 //--
    27 
    28 //////////////////////////////////////////////////////////////////////////////
    29 //++
     16/*!
     17  \class SOPHYA::CSpline
     18  \ingroup NTools
     19  Spline 3 smoother (interpolator) for 1-D data points (y = f(x))
     20  \sa CSpline2
     21*/
     22
     23/*!
     24  Createur pour spline 3 sur "x[0->n],y[0->n]" avec "yp1,ypn" derivees
     25  au premier et dernier points et "natural" indiquant les types de
     26  contraintes sur les derivees 2sd au premier et dernier point.
     27  "order" doit etre mis a "true" si le tableau de "x[]" n'est pas ordonne
     28  dans l'ordre des "x" croissants ("x[i]<x[i+1]"): cette option
     29  realloue la place pour les tableaux "x,y" autrement seule une
     30  connection aux tableaux "x,y" externes est realisee.
     31*/
    3032CSpline::CSpline(int n,double* x,double* y,double yp1,double ypn
    3133                ,int natural,bool order)
    32 //
    33 //      Createur pour spline 3 sur "x[0->n],y[0->n]" avec "yp1,ypn" derivees
    34 //      au premier et dernier points et "natural" indiquant les types de
    35 //      contraintes sur les derivees 2sd au premier et dernier point.
    36 //      "order" doit etre mis a "true" si le tableau de "x[]" n'est pas ordonne
    37 //      dans l'ordre des "x" croissants ("x[i]<x[i+1]"): cette option
    38 //      realloue la place pour les tableaux "x,y" autrement seule une
    39 //      connection aux tableaux "x,y" externes est realisee.
    40 //--
    4134  : Nel(0), corrupt_Y2(true), XY_Created(false), Natural(natural)
    4235  , YP1(yp1), YPn(ypn), X(NULL), Y(NULL), Y2(NULL), tmp(NULL)
     
    4740}
    4841
    49 //////////////////////////////////////////////////////////////////////////////
    50 //++
     42//!     Createur par defaut.
    5143CSpline::CSpline(double yp1,double ypn,int natural)
    52 //
    53 //      Createur par defaut.
    54 //--
    5544  : Nel(0), corrupt_Y2(true), XY_Created(false), Natural(natural)
    5645  , YP1(yp1), YPn(ypn), X(NULL), Y(NULL), Y2(NULL), tmp(NULL)
     
    5948
    6049//////////////////////////////////////////////////////////////////////////////
     50//! destructeur
    6151CSpline::~CSpline()
    62 // destructeur
    6352{
    6453DelTab();
    6554}
    6655
    67 //++
    68 // Titre        Methodes
    69 //--
    70 
    71 //////////////////////////////////////////////////////////////////////////////
    72 //++
     56/*!
     57  Pour changer les tableaux sans recreer la classe,
     58  memes arguments que dans le createur.
     59  Pour connecter les tableaux "x[n],y[n]" aux pointeurs internes "X,Y"
     60  Si "order=true", on considere que x n'est pas range par ordre
     61  des "x" croissants. La methode alloue de la place pour des tableaux
     62  internes "X,Y" qu'elle re-ordonne par "x" croissant.
     63  "force=true" impose la reallocation des divers buffers, sinon
     64  la reallocation n'a lieu que si le nombre de points augmente.
     65*/
    7366void CSpline::SetNewTab(int n,double* x,double* y,bool order,bool force)
    74 //
    75 //      Pour changer les tableaux sans recreer la classe,
    76 //      memes arguments que dans le createur.
    77 //      Pour connecter les tableaux "x[n],y[n]" aux pointeurs internes "X,Y"
    78 //      Si "order=true", on considere que x n'est pas range par ordre
    79 //      des "x" croissants. La methode alloue de la place pour des tableaux
    80 //      internes "X,Y" qu'elle re-ordonne par "x" croissant.
    81 //      "force=true" impose la reallocation des divers buffers, sinon
    82 //      la reallocation n'a lieu que si le nombre de points augmente.
    83 //--
    8467{
    8568ASSERT( n>3 );
     
    132115
    133116//////////////////////////////////////////////////////////////////////////////
     117//! destruction des divers tableaux en tenant compte des allocations/connections
    134118void CSpline::DelTab()
    135 // destruction des divers tableaux en tenant compte des allocations/connections
    136119{
    137120if( X   != NULL && XY_Created ) delete [] X;    X   = NULL;
     
    142125
    143126//////////////////////////////////////////////////////////////////////////////
    144 //++
     127/*!
     128  Pour changer les valeurs des derivees 1ere au 1er et dernier points
     129  Valeurs imposees des derivees 1ere au points "X[0]" et "X[Nel-1]".
     130*/
    145131void CSpline::SetBound1er(double yp1,double ypn)
    146 //
    147 //      Pour changer les valeurs des derivees 1ere au 1er et dernier points
    148 //      Valeurs imposees des derivees 1ere au points "X[0]" et "X[Nel-1]".
    149 //--
    150132{
    151133if( yp1 == YP1 && ypn == YPn ) return;
     
    157139}
    158140
    159 //////////////////////////////////////////////////////////////////////////////
    160 //++
     141//! Pour calculer les tableaux de coeff permettant le calcul des interpolations spline.
    161142void CSpline::ComputeCSpline()
    162 //
    163 //      Pour calculer les tableaux de coeff permettant le calcul
    164 //      des interpolations spline.
    165 //--
    166143{
    167144// on ne fait rien si les tableaux ne sont pas connectes
     
    206183}
    207184
    208 //////////////////////////////////////////////////////////////////////////////
    209 //++
     185//!     Interpolation spline en \b x
    210186double CSpline::CSplineInt(double x)
    211 //
    212 //      Interpolation spline en "x"
    213 //--
    214187{
    215188int klo,khi,k;
     
    243216}
    244217
    245 ///////////////////////////////////////////////////////////////
    246 ///////// rappel des inlines pour commentaires ////////////////
    247 ///////////////////////////////////////////////////////////////
    248 
    249 //++
    250 // inline void SetNaturalCSpline(int type = NaturalAll)
    251 //      Pour changer le type de contraintes sur les derivees 2sd
    252 //--
    253 //++
    254 // inline void Free_Tmp()
    255 //      Pour liberer la place tampon qui ne sert que
    256 //      dans ComputeCSpline() et pas dans CSplineInt
    257 //--
    258 
    259 //////////////////////////////////////////////////////////////////////////////
    260 //////////////////////////////////////////////////////////////////////////////
    261 
    262 //++
    263 // Class        CSpline2
    264 // Lib  Outils++
    265 // include      cspline.h
    266 //
    267 //      Classe de spline 2D
    268 //--
    269 
    270 //++
    271 // Titre        Constructeurs
    272 //--
    273 
    274 //////////////////////////////////////////////////////////////////////////////
    275 //++
     218
     219//////////////////////////////////////////////////////////////////////////////
     220//////////////////////////////////////////////////////////////////////////////
     221
     222/*!
     223  \class SOPHYA::CSpline2
     224  \ingroup NTools
     225  Spline smoother (interpolator) for 2-D data points (y = f(x1,x2))
     226  \sa CSpline
     227*/
     228
     229/*!
     230  Contructeur - Meme commentaire que pour CSpline avec:
     231  \verbatim
     232  x1[n1]: liste des coordonnees selon l axe 1
     233  x2[n2]: liste des coordonnees selon l axe 2
     234  y[n1*n2]: liste des valeurs avec le rangement suivant
     235  x1[0]......x1[n1-1]  x1[0]......x1[n1-1]  ... x1[0]......x1[n1-1]
     236  |    0<=i<n1      |  |    0<=i<n1      |  ... |    0<=i<n1      |
     237  |      j=0 X2[0]            j=1 X2[1]              j=n2-1 X2[n2-1]
     238  \endverbatim
     239*/
    276240CSpline2::CSpline2(int n1,double* x1,int n2,double* x2,double* y
    277241                  ,int natural,bool order)
    278 //
    279 //      Meme commentaire que pour CSpline avec:
    280 //| x1[n1]: liste des coordonnees selon l axe 1
    281 //| x2[n2]: liste des coordonnees selon l axe 2
    282 //| y[n1*n2]: liste des valeurs avec le rangement suivant
    283 //| x1[0]......x1[n1-1]  x1[0]......x1[n1-1]  ... x1[0]......x1[n1-1]
    284 //| |    0<=i<n1      |  |    0<=i<n1      |  ... |    0<=i<n1      |
    285 //|      j=0 X2[0]            j=1 X2[1]              j=n2-1 X2[n2-1]
    286 //--
    287242  : Nel1(0), Nel2(0), corrupt_Y2(true), XY_Created(false), Natural(natural)
    288243  , X1(NULL), X2(NULL), Y(NULL), Y2(NULL)
     
    294249}
    295250
    296 //////////////////////////////////////////////////////////////////////////////
    297 //++
     251//!     Createur par defaut.
    298252CSpline2::CSpline2(int natural)
    299 //
    300 //      Createur par defaut.
    301 //--
    302253  : Nel1(0), Nel2(0), corrupt_Y2(true), XY_Created(false), Natural(natural)
    303254  , X1(NULL), X2(NULL), Y(NULL), Y2(NULL)
     
    312263}
    313264
    314 //++
    315 // Titre        Methodes
    316 //--
    317 
    318 //////////////////////////////////////////////////////////////////////////////
    319 //++
     265//////////////////////////////////////////////////////////////////////////////
     266//!     Voir commentaire meme methode de CSpline
    320267void CSpline2::SetNewTab(int n1,double* x1,int n2,double* x2,double* y
    321268                        ,bool order,bool force)
    322 //
    323 //      Voir commentaire meme methode de CSpline
    324 //--
    325269{
    326270ASSERT( n1>3 && n2>3 );
     
    430374
    431375//////////////////////////////////////////////////////////////////////////////
    432 //++
     376//!     Voir commentaire meme methode de CSpline
    433377void CSpline2::ComputeCSpline()
    434 //
    435 //      Voir commentaire meme methode de CSpline
    436 //--
    437378{
    438379// on ne fait rien si X1 ou X2 ou Y non connectes
     
    454395
    455396//////////////////////////////////////////////////////////////////////////////
    456 //++
     397//! Calcule la valeur interpole (spline) pour le point \b (x1,x2)
    457398double CSpline2::CSplineInt(double x1,double x2)
    458 //
    459 //      Voir commentaire meme methode de CSpline
    460 //--
    461399{
    462400// calcul de la valeur Y pour x=x1 et remplissage du tampon tmp
     
    471409}
    472410
    473 ///////////////////////////////////////////////////////////////
    474 ///////// rappel des inlines pour commenatires ////////////////
    475 ///////////////////////////////////////////////////////////////
    476 
    477 //++
    478 // inline void SetNaturalCSpline(int type = NaturalAll)
    479 //      Voir commentaire meme methode de CSpline
    480 //--
Note: See TracChangeset for help on using the changeset viewer.