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