Nazwa ,,krzywa Béziera” stopnia
Występujące w nim funkcje
Powyższą reprezentację krzywych i stanowiąca jej rozwinięcie reprezentację płatów powierzchni we wczesnych latach tysiąc dziewięćset sześćdziesiątych opracowali niezależnie Pierre Bézier i Paul de Faget de Casteljau, na potrzeby firm Renault i Citroën. Dzięki swoim zaletom, takim jak łatwość interakcyjnego kształtowania i istnienie sprawnych algorytmów przetwarzania, reprezentacje te obecnie używane powszechnie nie tylko w inżynierskich systemach projektowania wspomaganego komputerem, ale także w wielu innych zastosowaniach graficznych (np. w projektowaniu czcionek).
Dla dowolnego
{ |
for |
for |
|
{ |
Udowodnimy, że punkt
oraz dla
Następnie przyjmiemy założenie indukcyjne, że punkty
Wielu podanych dalej własności krzywych Béziera i B-sklejanych dowodzi się w podobny sposób.
Algorytm de Casteljau ma oprócz obliczania punktów krzywej wiele innych zastosowań, o których będzie dalej.
Krzywe Béziera mają następujące własności:
Niezmienniczość afiniczna reprezentacji. Suma wielomianów
Bernsteina stopnia
Własność otoczki wypukłej. Dla
Zachodzi interpolacja skrajnych punktów kontrolnych:
Dla
Istnieje możliwość podwyższenia stopnia, czyli
znalezienia reprezentacji stopnia
Podwyższanie stopnia możemy iterować, dostając
reprezentacje coraz wyższych stopni. Ciąg łamanych kontrolnych
otrzymanych w ten sposób zbiega jednostajnie do krzywej dla
Jeśli kolejne punkty kontrolne leżą na prostej, w kolejności
indeksów i w równych odstępach, to krzywa Béziera jest odcinkiem
sparametryzowanym ze stałą prędkością. Najłatwiej jest udowodnić
to rozpatrując reprezentację odcinka w postaci krzywej Béziera
stopnia
Pochodna krzywej Béziera o punktach kontrolnych
Na podstawie własności otoczki wypukłej mamy więc
własność hodografu, według której kierunek
wektora
Podział krzywej. Punkty
Aby narysować krzywą, możemy dzielić ją na ,,dostatecznie krótkie” łuki i rysować zamiast nich odcinki. Możemy użyć w tym celu procedury rekurencyjnej (porównaj ją z przedstawioną wcześniej procedurą rysowania elipsy):
procedure r_Krzywa ( |
begin |
if dostatecznie blisko ( |
then rysuj odcinek ( |
else begin |
|
for |
for |
|
|
end; |
r_Krzywa ( |
r_Krzywa ( |
end |
end {r_Krzywa}; |
Otoczka wypukła łamanej kontrolnej ,,całej” krzywej jest z reguły znacznie większa niż suma otoczek łamanych kontrolnych kilku jej fragmentów, a zatem przez podział możemy uzyskiwać znacznie dokładniejsze oszacowania położenia krzywej.
Algorytm szybkiego obliczania punktu
Schemat Hornera ze względu na
for |
|
|
|
end; |
{ |
Modelowanie figur o skomplikowanym kształcie wymagałoby użycia krzywych Béziera wysokiego stopnia, co oprócz niewygody (z punktu widzenia użytkownika programu interakcyjnego) sprawiałoby różne kłopoty implementacyjne (bardzo duże wartości współczynników dwumianowych, wysoki koszt algorytmów obliczania punktu). Dlatego często stosuje się krzywe kawałkami wielomianowe w reprezentacji B-sklejanej; jest ona uogólnieniem reprezentacji Béziera krzywych wielomianowych.
Krzywa B-sklejana jest określona przez podanie: stopnia
We wzorze tym występują funkcje B-sklejane
Istnieje kilka definicji funkcji B-sklejanych, które różnią się stopniem skomplikowania, a także trudnością dowodzenia na podstawie takiej definicji różnych własności tych funkcji (w zasadzie więc wychodzi na jedno, której definicji użyjemy, jeśli chcemy dowodzić twierdzenia, to trudności nie da się uniknąć). Ponieważ w tym wykładzie ograniczamy się do praktycznych aspektów zagadnienia, więc przytoczę rekurencyjny wzór Mansfielda-de Boora-Coxa, który w książkach o grafice chyba najczęściej pełni rolę definicji:
(6.1) | ||||
(6.2) |
Wzór ten jest uogólnieniem rozważanego wcześniej wzoru wiążącego
wielomiany Bernsteina stopni
Na podstawie wzoru Mansfielda-de Boora-Coxa łatwo jest otrzymać
algorytm de Boora obliczania punktu
{ |
while |
while ( |
for |
for |
|
|
end; |
{ |
Własności krzywych B-sklejanych najbardziej istotne w zastosowaniach związanych z grafiką komputerową, są takie:
Jeśli wszystkie węzły od
Algorytm de Boora dokonuje liniowej interpolacji kolejno
otrzymywanych punktów (liczby
Lokalna kontrola kształtu. Ponieważ punkt
Pochodna krzywej B-sklejanej stopnia
Funkcje B-sklejane
W otoczeniu węzła o krotności
Jeśli dwa sąsiednie węzły są
Wstawianie węzła jest procedurą, która zmienia reprezentację krzywej, nie zmieniając samej krzywej. W wyniku zastosowania tej procedury otrzymujemy reprezentację o większej liczbie węzłów i punktów kontrolnych. Idea postępowania, które prowadzi do otrzymania tej reprezentacji może być przedstawiona w następujących krokach
Określamy tak zwane współrzędne Greville'a:
Będziemy (w myśli) przekształcać łamaną o wierzchołkach
Dołączamy liczbę
Obliczamy nowe współrzędne Greville'a
Znajdujemy punkty
Praktyczna implementacja procedury wstawiania węzła nie musi obliczać współrzędnych Greville'a, które pełnią tu rolę pomocniczą. Równoważny skutek daje następujący podprogram:
{ |
{ |
while |
|
while ( |
begin |
for |
|
for |
|
for |
|
{ zmienna |
Własności tego przekształcenia reprezentacji krzywej są następujące:
Po wstawieniu węzła liczba punktów kontrolnych
jest większa o
Wynik wstawienia kilku węzłów nie zależy od kolejności ich wstawiania.
Krzywa reprezentowana przez nowy ciąg węzłów i nowy ciąg punktów kontrolnych jest identyczna z krzywą wyjściową.
Algorytm de Boora jest procedurą wstawiania węzła,
powtórzoną tyle razy, aby ostatecznie otrzymać
Po wstawieniu dostatecznie wielu węzłów (tak, aby ich
odległości stały się dostatecznie małe), otrzymujemy łamaną
kontrolną, która jest dowolnie bliska krzywej. Odległość
odpowiednio sparametryzowanej łamanej kontrolnej od reprezentowanej
przez nią krzywej B-sklejanej jest proporcjonalna do
Procedurę wstawiania węzła możemy wykorzystać tak:
wybieramy początkowo małą liczbę węzłów i punktów kontrolnych w celu zgrubnego ukształtowania krzywej,
wstawiamy pewną liczbę dodatkowych węzłów,
poprawiamy krzywą w celu wymodelowania szczegółów.
Inne zastosowanie to wstawienie węzłów tak, aby krotność
wszystkich węzłów była równa
Narzucenie węzłów równoodległych ogranicza klasę krzywych B-sklejanych, ale jednocześnie upraszcza wzory i umożliwia stosowanie specjalnych algorytmów.
Przypuśćmy (bez straty ogólności), że dana krzywa jest reprezentowana
przez nieskończony ciąg węzłów, składający się z wszystkich liczb
całkowitych, i nieskończony ciąg punktów kontrolnych
gdzie każda funkcja B-sklejana
Rozważmy teraz nieskończony ciąg węzłów, składający się z wszystkich
całkowitych wielokrotności liczby
Na podstawie danych punktów
Algorytm Lane'a-Riesenfelda, który rozwiązuje to zadanie, podaję
bez dowodu. Algorytm ten składa się z dwóch etapów. Pierwszy z nich to
podwajanie: konstruujemy punkty
Wyniki działania algorytmu dla krzywych stopnia
Do określenia powierzchni potrzebne są funkcje dwóch zmiennych. Najczęściej wykorzystuje się iloczyn tensorowy przestrzeni funkcji jednej zmiennej. Użycie go prowadzi do wzorów
które opisują odpowiednio płat powierzchni Béziera i płat
powierzchni B-sklejanej stopnia
Dziedziną płata Béziera jest zwykle kwadrat jednostkowy. Dziedziną
płata B-sklejanego jest prostokąt
Punkty kontrolne płata każdego z tych rodzajów dla wygody kształtowania
przedstawia się w postaci siatki. Wyróżniamy w niej
wiersze i kolumny. Wyznaczenie punktu na powierzchni, dla
ustalonych parametrów
Wszystkie działania wykonujemy na kolumnach siatki, traktując je tak,
jakby to były łamane kontrolne krzywych. Punkty tych krzywych,
odpowiadające ustalonemu
Zasada przetwarzania reprezentacji płata w celu podwyższenia stopnia, podziału na kawałki, wstawienia węzła i obliczenia pochodnych cząstkowych jest identyczna.
Dziedziną trójkątnego płata Béziera jest zwykle trójkąt,
którego wierzchołki stanowią układ odniesienia układu współrzędnych
barycentrycznych
Płat jest określony wzorem
w którym występują wielomiany Bernsteina trzech zmiennych
stopnia
Algorytm wyznaczania punktu (algorytm de Casteljau) jest następujący:
{ |
for |
for |
|
{ |
Podobnie jak w przypadku krzywych Béziera, algorytm de Casteljau pozwala
dokonać podziału płata. Punkty kontrolne jego fragmentów to odpowiednio
Algorytm Lane'a-Riesenfelda dla powierzchni B-sklejanych stopnia
z funkcjami B-sklejanymi stopnia
gdzie funkcje
W kroku podwajania przyjmujemy
W kroku uśredniania dla
W ten sposób otrzymujemy nową siatkę kontrolną; powtarzając ten algorytm,
otrzymamy ciąg siatek szybko zbieżny do powierzchni
Okazuje się, że opisane wyżej postępowanie daje się uogólnić na siatki nieregularne, tj. takie, których wierzchołków nie można ustawić w prostokątną tablicę. Rozważmy siatkę jako graf; wierzchołki siatki są wierzchołkami grafu, odcinki siatki są krawędziami grafu, możemy też określić ściany grafu, jako łamane zamknięte złożone z krawędzi, takie że odrzucenie wierzchołków i krawędzi łamanej nie likwiduje spójności grafu. Zakładamy, że każda krawędź należy do jednej lub do dwóch ścian.
Siatka jest regularna, jeśli wszystkie ściany
mają
Dla siatki, która zawiera elementy specjalne, możemy określić operację
podwajania w ten sposób: każdy wierzchołek stopnia
Operację uśredniania określamy tak: konstruujemy graf dualny do siatki danej. Dla każdej ściany określamy wierzchołek, jako środek ciężkości wierzchołków tej ściany. Dla każdej krawędzi wspólnej dla dwóch ścian wprowadzamy krawędź łączącą wierzchołki skonstruowane dla tych ścian. Ściany nowej siatki odpowiadają wierzchołkom wewnętrznym siatki danej. Również taka operacja uśredniania jest dla siatki regularnej identyczna z uśrednianiem wykonywanym w algorytmie Lane'a-Riesenfelda. Zauważmy, że choć liczba wierzchołków, krawędzi i ścian rośnie podczas podwajania, ale żadna z opisanych operacji nie może powiększyć liczby elementów specjalnych w siatce.
Możemy teraz wykonać podwajanie, a następnie
Krzywe i powierzchnie Béziera i B-sklejane są wielomianowe lub kawałkami wielomianowe, tj. ich parametryzacje są opisane za pomocą wielomianów. Nakłada to spore ograniczenia na możliwe do przedstawienia w tej postaci kształty, na przykład nie istnieje wielomianowa parametryzacja okręgu. Znacznie szersze możliwości modelowania udostępniają krzywe i powierzchnie wymierne. W zasadzie każdą reprezentację krzywych wielomianowych lub kawałkami wielomianowych (sklejanych) można uogólnić tak, aby otrzymać krzywe wymierne.
Aby to zrobić, wystarczy określić krzywą (albo powierzchnię) wielomianową
w przestrzeni, której wymiar jest o
Krzywą
jest jednorodną reprezentacją wymiernej krzywej Béziera, danej wzorem
W podobny sposób określa się wymierne krzywe B-sklejane, a także wymierne płaty powierzchni Béziera i B-sklejane.
Wymierne krzywe i powierzchnie sklejane znane są pod nazwą NURBS, która jest skrótem angielskiego określenia non-uniform rational B-splines. Słowa non-uniform (czyli nierównomierne) dotyczą dopuszczalnych ciągów węzłów w definicji takiej krzywej — węzły te nie muszą być równoodległe.
Zakreślanie (ang. sweeping) jest sposobem określania powierzchni, w najprostszym przypadku za pomocą krzywej, tzw. przekroju i odcinka, tzw. prowadnicy. Zasada jest przedstawiona na rysunku.
Konstrukcję tę można uogólniać na wiele sposobów; jednym z nich jest przekształcanie przekroju podczas ,,przesuwania” go wzdłuż prowadnicy. Jeśli przekształcenie to jest jednokładnością o ustalonym środku, to zamiast powierzchni walcowej otrzymujemy powierzchnię stożkową. Dalsze możliwości uogólnienia tej konstrukcji są następujące:
Prowadnica może być krzywą;
Każdemu punktowi prowadnicy odpowiada inne przekształcenie afiniczne, któremu będzie poddany przekrój;
Można też dopuścić zmiany kształtu przekroju podczas ,, przesuwania” go.
Dopuszczenie wszystkich tych możliwości wymaga opisania powierzchni zakreślanej wzorem
W tym wzorze występują krzywe:
prowadnica,
tzw. kierownice,
przekrój,
Zmienna
Zauważmy, że dla ustalonego
Jeśli wszystkie krzywe są krzywymi B-sklejanymi i przekrój nie zależy od
Tablicujemy wzór określający powierzchnię; otrzymujemy w ten sposób prostokątną tablicę punktów na powierzchni. Na podstawie tych punktów generujemy trójkąty, które jeśli jest ich dość dużo, przybliżają powierzchnię dostatecznie dokładnie.
Konstruujemy powierzchnię rozpinaną. W tym celu należy wyznaczyć
krzywe B-sklejane opisujące przekrój dla wybranych wartości parametru
Przypuśćmy, że dane są liczby (węzły)
Założymy, że stopień i ciąg
węzłów użyty do określenia wszystkich krzywych
Konstrukcja dla
Punkty
Aby skonstruować B-sklejaną powierzchnię interpolacyjną (powierzchnię
rozpinaną), wystarczy zamiast punktów
Najczęściej stosowane w grafice powierzchnie zadane w postaci niejawnej to
powierzchnie algebraiczne i kawałkami algebraiczne, czyli zbiory miejsc
zerowych wielomianów trzech zmiennych. Najbardziej znana reprezentacja
płaszczyzny, za pomocą dowolnego punktu
Podobnie, współrzędne środka
Dość często spotyka się w praktyce powierzchnie wyższego stopnia (np. torus, powierzchnia stopnia
Określenie prostokątnego płata Béziera opiera się na pojęciu
iloczynu tensorowego dwóch przestrzeni funkcji jednej zmiennej. Możemy
rozpatrywać iloczyny tensorowe większej liczby przestrzeni. Jeśli są to
przestrzenie wielomianów stopnia
Dowolny wielomian trzech zmiennych, stopnia
Współczynnik
Powierzchnia określona za pomocą takiego wielomianu trzech zmiennych jest
zbiorem jego miejsc zerowych wewnątrz kostki. Wyznaczanie punktów takiej
powierzchni lub jej przybliżenia (np. za pomocą trójkątów) wymaga
obliczania wartości funkcji
Znając rozwiązanie
co umożliwia zastosowanie algorytmu de Casteljau albo schematu Hornera.
Algorytm de Casteljau umożliwia podział kostki, w której jest określona
powierzchnia, na prostopadłościany. Możemy to wykorzystać do otrzymania
obszaru o dowolnie małej objętości, w którym znajduje się powierzchnia.
Wystarczy dzielić rekurencyjnie kostkę i odrzucać te jej fragmenty,
w których współczynniki lokalnej reprezentacji wielomianu
W grafice komputerowej bardzo popularne są powierzchnie określane słowem blob
(to angielskie słowo nie doczekało się polskiego odpowiednika). Powierzchnia taka może być
zbiorem miejsc zerowych funkcji
Zamiast funkcji przestępnej
Aby określić taką powierzchnię, należy określić tzw. szkielet, czyli
zbiór punktów
Powierzchnie zadane w sposób niejawny mają to do siebie, że funkcja
występująca w definicji umożliwia rozróżnienie trzech podzbiorów
przestrzeni: powierzchnia jest zbiorem miejsc zerowych. W punktach
należących do wnętrza bryły, której brzegiem jest rozpatrywana
powierzchnia, funkcja ma wartości dodatnie, a punkty na zewnątrz
odpowiadają ujemnym wartościom funkcji (można też traktować znaki
funkcji odwrotnie). Ta informacja jest niesłychanie ważna podczas
znajdowania punktów powierzchni, a także w konstrukcyjnej geometrii brył
i dlatego nie należy uważać funkcji
Treść automatycznie generowana z plików źródłowych LaTeXa za pomocą oprogramowania wykorzystującego LaTeXML.
strona główna | webmaster | o portalu | pomoc
© Wydział Matematyki, Informatyki i Mechaniki UW, 2009-2010. Niniejsze materiały są udostępnione bezpłatnie na licencji Creative Commons Uznanie autorstwa-Użycie niekomercyjne-Bez utworów zależnych 3.0 Polska.
Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego.
Projekt współfinansowany przez Ministerstwo Nauki i Szkolnictwa Wyższego i przez Uniwersytet Warszawski.