12 - THINK - Sierzega

Transkrypt

12 - THINK - Sierzega
„KRZYWA BÉZIERA” – TWORZENIE I WIZUALIZACJA KRZYWYCH
PARAMETRYCZNYCH NA PRZYKŁADZIE KRZYWEJ BÉZIERA
Krzysztof Sierżęga
Wyższa Szkoła Informatyki i Zarządzania w Rzeszowie
Streszczenie
Artykuł porusza temat związany z krzywymi Béziera oraz algorytmem Casteljau. Zawarte są w nim przykłady zastosowań krzywych Béziera w takich dziedzinach jak grafika, czy projektowanie. Opisuję czym są
krzywe Béziera, jak się je tworzy i przedstawiam algorytm Casteljau. Następnie przedstawiam narzędzie
mojego autorstwa do wizualizacji krzywych i sposobu działania algorytmu. Na koniec prezentuje dalsze
możliwości rozwoju aplikacji
Wstęp
W artykule opisuje sposoby tworzenia krzywych Beziera i ich prezentowania. Przedstawię mój program,
umożliwiający wizualizacje krzywych Béziera.
1. Cel
Moim celem jest stworzenie narzędzia służącego do jasnej reprezentacji idei krzywych i stosowanych
metod ich wyznaczaniu.
www.think.wsiz.rzeszow.pl, ISSN 2082-1107, Nr 2 (6) 2011, s. 139-145
„Krzywa Béziera” – tworzenie i wizualizacja krzywych parametrycznych na przykładzie krzywej Béziera
2. Historia
Krzywe Béziera zostały opracowanie w latach 60. XX w. Prace nad nimi były prowadzone niezależnie
przez dwóch naukowców Pierre'a Béziera oraz Paula de Casteljau. Obydwaj pracowali dla firm zajmujących się projektowaniem i produkcją samochodów (pierwszy z nich dla Renault, drugi zaś dla Citroën).
Przez lata ich prace były utajnione, dopiero pod koniec zaczęły pojawiać się pierwsze publikacje Pierre'a
Béziera opisujące jego prace, dlatego też noszą one jego nazwisko. Prace Paula de Casteljau ukazały się
na początku lat 70.
3. Zastosowanie
Krzywe Béziera znalazły szerokie zastosowanie, szczególnie w dziedzinach związanych z projektowaniem
oraz grafiką komputerową. Jako że krzywe te były wymyślone w celu łatwego opisu krzywych stosowanych przy projektowaniu nadwozi samochodów, stosuje się je dodo chwili obecnej. Dodatkowo znalazły
szerokie zastosowanie w grafice komputerowej. Stosuje się je w systemach przetwarzania grafiki komputerowej takich jak PostScript, MetaPost. W PostScripcie krzywa Béziera opisuje wszystkie krzywe,
aproksymuje nawet łuki eliptyczne. Kolejnym jej zastosowaniem są czcionki komputerowe, gdzie za jej
pomocą reprezentuje się kształty znaków (TrueType, METAFONT, Type1). Ponadto, jest stosowana
w programach do tworzenia grafiki komputerowej takich jak: Corel Draw, Adobe Illustrator czy Inkscape
oraz w programach do projektowania inżynierskiego np. MicroStation.
4. Wielomianowa krzywa Béziera
Do tworzenia krzywej Béziera wykorzystuje się n + 1 punktów kontrolnych p0,…pn . Kształt krzywej
Béziera zależy od wielomianów, dla których przyjęto dziedzinę [0,1]. Stopień wielomianu wynosi n. Wielomiany te przedstawianie są zwykle w bazie wielomianów Bernsteina Bin(t), czyli
 n  i
n −i
 t (1 − t ) dla i = 0...n
n
Bi (t ) =  i 
0
dla i < 0, i > n

Dowolny punkt na krzywej Béziera wyznaczamy:
n
p(t ) = ∑ pi Bin (t )
dla t ∈ [0,1]
i =0
140
„Krzywa Béziera” – tworzenie i wizualizacja krzywych parametrycznych na przykładzie krzywej Béziera
Najczęściej stosowanymi krzywymi Béziera są krzywe trzeciego stopnia leżące na płaszczyźnie. Aby
określić krzywą na płaszczyźnie potrzebne są dwie funkcje, natomiast aby określić krzywą w przestrzeni
trzy. Krzywe trzeciego stopnia na płaszczyźnie podaje się cztery punkty A, B, C, D. Otrzymujemy następujące równanie:
Natomiast wielomiany tworzące krzywą Béziera mają postać:
Cechą charakterystyczną wielomianów Béziera jest to, iż interpoluje ona dwa końcowe punkty kontrolne natomiast pozostałe punkty aproksymuje.
5. Algorytm Casteljau
Algorytm Casteljau pozwala na wyznaczenie dowolnego punktu na wielomianowej krzywej Béziera, przy
zadanym t∈[0,1].Przy czym dla 0 pryzmujemy punkt początkowy krzywej natomiast za 1 przyjmujemy
punkt końcowy krzywej ( punkty które są interpolowane przez krzywą). Jedną z najważniejszych cech algorytmu Casteljau jest to, że ma mniejszą złożoność obliczeniową niż stosowanie wzorów, co jest bardzo ważne w zastosowaniach komputerowych.
Krok 1. Wybieramy 4 punkty
Krok 2. Tworzę łamaną – łącząc kolejne punkty kontrolne.
Krok 3. Na każdym odcinku łamanej wyznaczam punkt w odpowiedniej odległości zależnej od wybranego t. Otrzymane punkty łączymy jak w kroku nr 2.
Krok 4. Gdy otrzymujemy jeden punkt. Jest to punkt na krzywej Béziera dla zadanego t.
141
„Krzywa Béziera” – tworzenie i wizualizacja krzywych parametrycznych na przykładzie krzywej Béziera
Rysunek 1 Krzywa Béziera i algorytm Casteljau
Rysunek 1 przedstawia działanie algorytmu dla t =1/2. Pogrubiona czarna linia to krzywa Béziera dla
czterech punktów bazowych oznaczonych na czerwono. Zielony punkt, to wyznaczony punkt na krzywej
Béziera wyznaczony dla t=1/2.
6. Opis programu
Poniżej zaprezentuje stworzone narzędzie które udostępnia kilka funkcjonalności związanych z krzywymi Béziera oraz algorytem Casteljau. Aplikacja została napisana z wykorzystaniem języka C# oraz platformy .NET. Dlatego jeśli chcemy uruchomić program musimy posiadać zainstalowany pakiet Microsoft
.Net Framework w wersji 3.5 lub wyższej. Poniżej przedstawiam rzut ekranu z programu.
142
„Krzywa Béziera” – tworzenie i wizualizacja krzywych parametrycznych na przykładzie krzywej Béziera
Rysunek 2 "Krzywa Beziera" - przykład krzywej
Program umożliwia wpisanie współrzędnych punktów bazowych wielomianu Béziera trzeciego stopnia.
Zakres wprowadzonych danych powinien się zawierać w przedziale [-200,200]. Przy wprowadzeniu nie
poprawnej wartości użytkownik zostaje poinformowany stosownym komunikatem. Możemy narysować
krzywą dla podanych punktów. Po narysowaniu program udostępnia nam możliwość zmiany położenia
punktów w sposób interaktywny, (czyli po najechaniu myszką na punkt i można przycisnąć lewy przycisk
myszy i przeciągnąć zaznaczony punkt w dowolne miejsce obszaru rysowania). Nowa krzywa po puszczeniu przycisku zostaje odrysowana, zaś nowe współrzędne punktów zostają wprowadzone w miejsce
gdzie możemy je wpisać lub poprawić. Pod obszarem rysowania natomiast wypisywane są wzory na
funkcje tworzące wielomian Béziera.
Kolejną ważną funkcjonalnością prezentowanej aplikacji jest możliwość wizualizacji algorytmu Casteljau.
143
„Krzywa Béziera” – tworzenie i wizualizacja krzywych parametrycznych na przykładzie krzywej Béziera
Rysunek 3 "Krzywa Beziera" - przykład algorytmu Casteljau
Program ma możliwość wizualizacji algorytmu. Działa na zasadzie opóźnień. Program oblicza i rysuje jeden krok, następnie czeka określony czas, po czym wykonuje następny krok, aż do otrzymania ostatniego punktu.
7. Perspektywy dalszego rozwoju
W zaprezentowanym programie można planuję dodać automatyczne skalowanie obszaru rysowania.
oraz dodanie możliwości rysowania wielomianów różnego stopnia. (Obecnie program udostępnia możliwość rysowania tylko krzywych trzeciego stopnia(. Ponadto planuję dodać możliwości tworzenia krzywych sklejanych, np. krzywych B-sklejanych.
Zakończenie
W artykule przedstawiam krzywe Béziera. Omawiam ich zastosowanie, i metody tworzenia. Ponadto
prezentuję algorytm Casteljau, oraz mój program służący do tworzenia i wizualizacji krzywych parametrycznych i algorytmu Casteljau.
144
„Krzywa Béziera” – tworzenie i wizualizacja krzywych parametrycznych na przykładzie krzywej Béziera
Bibliografia
James D Foley, Andries van Dam, Steven K Freiner, John F Hughes, Richard L Phillips: Wprowadzenie
do grafiki komputerowej. Jan Zabrodzki (tłumaczenie). Warszawa: Wydawnictwa NaukowoTechniczne 2001, wydanie drugie.
Zofia Matusiewicz: Matematyka dla grafików komputerowych, Wydawnictwo: WSIiZ 2008.
Wikipedia
Artykuł pt „ Algorytm de Casteljau”
http://pl.wikipedia.org/wiki/Algorytm_de_Casteljau
Artykuł pt „Krzywa Béziera”
http://pl.wikipedia.org/wiki/Krzywa_Béziera
Stephen C. Perry: C# i .Net, Wydawnictwo: Helion 2006r.
145