Krzywe Beziera - problem z implementacją
Ostatnio zmodyfikowano 2015-02-17 21:56
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: 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 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? |
|
maly |
» 2015-02-16 17:58:56 Pewnie podajesz tylko jeden punkt(pts). |
|
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 |
|
DejaVu |
» 2015-02-17 21:56:48 |
|
« 1 » |