//---------------------------------------------------------------------------- // 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 ; }