Files
Dario Sassi 2c6ebdadca EgtGeomKernel :
- correzioni, migliorie e d estensioni alle superfici di Bezier
- in Release cambiate opzioni di ottimizzazione da /Ox  a /O2.
2020-03-30 11:04:20 +00:00

53 lines
1.6 KiB
C

//----------------------------------------------------------------------------
// EgalTech 2020-2020
//----------------------------------------------------------------------------
// File : Bernstein.h Data : 22.03.20 Versione : 2.2c2
// Contenuto : Implementazione delle funzioni sui polinomi di Bernstein.
//
//
//
// Modifiche : 22.03.20 DS Creazione modulo.
//
//
//----------------------------------------------------------------------------
#pragma once
//--------------------------- Include ----------------------------------------
#include "/EgtDev/Include/EgtNumCollection.h"
//----------------------------------------------------------------------------
inline bool
GetAllBernstein( double dU, int nDeg, DBLVECTOR& vBern)
{
if ( nDeg >= int( vBern.size()))
return false ;
vBern[0] = 1 ;
for ( int i = 1 ; i <= nDeg ; ++ i) {
double dTot = 0 ;
for ( int j = 0 ; j < i ; ++ j) {
double dTmp = vBern[j] ;
vBern[j] = dTot + ( 1 - dU) * dTmp ;
dTot = dU * dTmp ;
}
vBern[i] = dTot ;
}
return true ;
}
//----------------------------------------------------------------------------
inline bool
IncreaseAllBernsteinOneDegree( double dU, int nDeg, DBLVECTOR& vBern)
{
if ( nDeg >= int( vBern.size()))
return false ;
double dTot = 0 ;
for ( int j = 0 ; j < nDeg ; ++ j) {
double dTmp = vBern[j] ;
vBern[j] = dTot + ( 1 - dU) * dTmp ;
dTot = dU * dTmp ;
}
vBern[nDeg] = ( nDeg > 0 ? dTot : 1) ;
return true ;
}