Podręcznik
3. Krzywe Béziera dowolnego stopnia
3.1. Funkcje Bernsteina i krzywe wielomianowe Béziera
Wiemy już, że krzywą Béziera 3 stopnia opisuje funkcja wektorowa:
Można ją jednak zapisać inaczej:
są szczególnym przypadkiem znanych z matematyki funkcji Bernsteina (stosowanych w dowodzie twierdzenia Weierstrassa o przybliżeniu funkcji ciągłych), które mogą być dowolnego, n-tego stopnia:
Dla funkcji Bernsteina Pierre Bézier w genialny, nowatorski sposób znalazł jednak zupełnie inne, bardzo praktyczne zastosowanie, gdyż wykorzystał je do definiowania krzywych dowolnego stopnia, będących uogólnieniem krzywych 2 i 3 stopnia. Taka krzywa zdefiniowana jest dowolną liczbą wierzchołków kontrolnych (Rysunek 22).
Jeśli ponumerujemy je od 0 do n (Rysunek 22), to krzywa jest stopnia n i określona jest wzorem:
gdzie V0, V1, … , Vn są wierzchołkami kontrolnymi krzywej, a funkcje Bernsteina n-tego stopnia pełnią rolę współczynników wagowych przy wierzchołkach. Przykłady funkcji Bernsteina 1, 2 i 3 stopnia przedstawia Rysunek 23.
Funkcje Bernsteina mają następujące własności:
- są zawsze dodatnie w całym przedziale 0 <u < 1, a to oznacza, że przesunięcie pojedynczego wierzchołka wieloboku wpływa na zmianę kształtu całej krzywej;
- suma ich dla dowolnej wartości u jest tożsamościowo równa 1, co w połączeniu z własnością 1 oznacza, że każdy punkt krzywej jest średnią ważoną wszystkich wierzchołków kontrolnych (współczynnikami wagowymi są funkcje Bernsteina) i to w taki sposób, że leży on wewnątrz wypukłego wieloboku rozpiętego na wszystkich wierzchołkach.
Jak łatwo sprawdzić, podane wcześniej krzywe Béziera 2 stopnia są również szczególnym przypadkiem krzywych stopnia n. I jak widać na Rysunek 23, krzywą Béziera pierwszego stopnia jest…odcinek.
Rysunek 22. Krzywa Béziera zdefiniowana dowolną liczbą wierzchołków, ponumerowanych od 0 do n. Wielobok ma więc n boków i krzywa jest stopnia n.
Rysunek 23 – Aplikacja nr 2. Krzywe Béziera i funkcje Bernsteina: a) 1 stopnia, b) 2 stopnia, c) 3 stopnia.
Punkt zaznaczony na krzywej obliczany jest na podstawie wierzchołków kontrolnych i wartości funkcji zaznaczonych na wykresach.
Napisz wzory opisujące krzywą Béziera 1. stopnia
Do ilustracji własności funkcji Bernsteina i krzywych Béziera dowolnego stopnia służy Aplikacja nr 2, którą przedstawia Rysunek 24. Zaznaczając wierzchołki na ekranie, można zamodelować krzywą Béziera dowolnego stopnia i obejrzeć funkcje Bernsteina składające się na jej definicję. Stopień krzywej wynika z liczby podanych wierzchołków i ukazuje się w okienku. Dodatkowo po włączeniu "Edytuj krzywą" można dowolnie przeciągać wierzchołki.
Rysunek 24 - Aplikacja nr 2. Krzywa Béziera i funkcje Bernsteina różnych stopni. Wybierając kliknięciem na ekranie kolejne wierzchołki kontrolne, otrzymujemy krzywą coraz wyższego stopnia, dla których suwakiem można zmieniać wartość parametru u.
Można też modelować krzywą przy wyłączonym rysunku wieloboku, jak pokazuje Aplikacja nr 3 (Rysunek 25). Sposób taki, choć mniej oczywisty, jest spotykany w niektórych modelerach.
Rysunek 25 – Aplikacja nr 3. Modelowanie krzywej Béziera dowolnego stopnia.
Do wyznaczania funkcji Bernsteina najlepiej jest wykorzystać zależność rekurencyjną (i nie liczyć wszystkich silni od początku !):
Stąd wynika tzw. algorytm Kiciaka:
s:=1-u;
P:=V0; // P jest punktem pomocniczym
e:=u; b:=n;
for i:= 1 to n do begin
P:=s*P+b*e*Vi;
e:=e*u;
b:=b*(n-i)/(i+1);
end;
// otrzymany w końcowej iteracji punkt P jest szukanym punktem P(u)
Należy podkreślić, że krzywe Béziera wysokiego stopnia nie są zbyt wygodne w modelowaniu - jak łatwo zauważyć, coraz trudniej przewidzieć ich kształt na podstawie wieloboku i coraz mniej są do tego wieloboku zbliżone. Łatwiej też w nich wprowadzić niepożądane zafalowania. Dlatego zaleca się, by w projektowaniu nie używać krzywych Béziera stopnia wyższego niż 7.