Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Krzywe Beziera - problem z implementacją

Ostatnio zmodyfikowano 2015-02-17 21:56
Autor Wiadomość
kubawal
Temat założony przez niniejszego użytkownika
Krzywe Beziera - problem z implementacją
» 2015-02-16 17:21:31
Witam!

Mam zestaw wierzchołków i muszę z nich utworzyć ładne łagodne wzgórza oparte na krzywej Beziera.
Krzywą realizuję za pomocą takiego algorytmu:
C/C++
inline double factorial( double num )
{
    if( num <= 1 )
         return 1;
   
    double fac = 1;
    for( double i = 1; i <= num; i++ )
         fac *= i;
   
    return fac;
}

inline double choose( double a, double b )
{
    return factorial( a ) /( factorial( b ) * factorial( a - b ) );
}

template < typename Point > // Point można mnożyć przez double i dodawać
Point bezier( double t, Point * pts, size_t len )
{
    Point p;
    for( size_t i = 0; i < len; i++ )
         p += pts[ i ] * choose( len - 1, i ) * pow( 1 - t, len - 1 - i ) * pow( t, i );
   
    return p;
}
Problem jest taki, że wszystkie punkty krzywej zawsze znajdują się w pierwszym punkcie (czyli funkcja bezier dla dowolnego t zawsze zwraca pts[0])
Macie jakiś pomysł dlaczego tak jest?
P-126677
maly
» 2015-02-16 17:58:56
Pewnie podajesz tylko jeden punkt(pts).
P-126678
kubawal
Temat założony przez niniejszego użytkownika
» 2015-02-16 22:10:37
Niee na pewno nie tu leży błąd robiłem testy też dla stałej len
P-126687
DejaVu
» 2015-02-17 21:56:48
http://informatyka.wroc.pl​/node/14

Dodaj sobie printfy wartości zwracanych przez funkcje i dodatkowo wartości poszczególnych kroków obliczeń.
P-126720
« 1 »
  Strona 1 z 1