GKIW Moduł 6 - Modelowanie obiektów: Różnice pomiędzy wersjami
Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Nie podano opisu zmian |
m Zastępowanie tekstu – „,...,” na „,\ldots,” |
||
(Nie pokazano 5 wersji utworzonych przez 2 użytkowników) | |||
Linia 26: | Linia 26: | ||
|valign="top"| | |valign="top"| | ||
Wydawać by się mogło, że najprostszą forma modelowania krzywej jest wskazanie zbioru punktów na niej leżących a następnie połączenie ich krzywą interpolującą – najprościej wielomianową. | Wydawać by się mogło, że najprostszą forma modelowania krzywej jest wskazanie zbioru punktów na niej leżących a następnie połączenie ich krzywą interpolującą – najprościej wielomianową. | ||
Jeżeli dany jest ciąg parami różnych liczb <math>t_0, t_1, t_2, …t_n </math> – węzłów interpolacyjnych i odpowiadających im punktom <math>P_0, P_1, P_2,…P_n | Jeżeli dany jest ciąg parami różnych liczb <math>t_0, t_1, t_2, …t_n</math> – węzłów interpolacyjnych i odpowiadających im punktom <math>P_0, P_1, P_2,…P_n</math>. To poszukujemy krzywej wielomianowej <math>P(t)</math> takiej, że jest ona stopnia co najwyżej <math>n</math> oraz <math>P(t_i)=P_i</math> dla każdego <math>i</math>. Tak sformułowane zadanie jest zadaniem interpolacyjnym Lagrange’a i ma dokładnie jedno rozwiązanie w postaci: | ||
<math>P(t)=\Sigma_{i=0 }^n P_i( \prod_{j=0j\ne i}^n \frac{t-t_j}{t_i-t_j})</math> | <math>P(t)=\Sigma_{i=0 }^n P_i( \prod_{j=0j\ne i}^n \frac{t-t_j}{t_i-t_j})</math> | ||
Linia 182: | Linia 182: | ||
|width="500px" valign="top"|[[Grafika:GKIW_M6_Slajd_12.png|thumb|500px]] | |width="500px" valign="top"|[[Grafika:GKIW_M6_Slajd_12.png|thumb|500px]] | ||
|valign="top"|Pierwsza właściwość – zerowanie funkcji sklejanej poza przedziałem <math><t_i,t_{i+m+1}></math> jest bardzo istotna dla modelowania kształtu. Oznacza bowiem lokalność wpływu parametrów. Rozpatrzmy podprzedział <math><t_i,t_{i+m+1}></math> dla <math>t\in (t_i,t_{i+m+1})</math> niezerowe są tylko funkcje <math>N_i^m(t)</math> o indeksach <math>i=j-m, j-m+1, j-m+2, j</math> . W takim przedziale wartość <math>Q(t)</math> , a tym samym kształt krzywej, zależy tylko od punktów kontrolnych <math>P_{j-m}, P_{j-m+1}, P_{j-m+2},…P_j</math> . Z drugiej strony punkt kontrolny <math>P_i</math> wpływa jedynie na fragment krzywej odpowiadający <math>t\in <t_i, t_{i+m+1}></math> . | |valign="top"|Pierwsza właściwość – zerowanie funkcji sklejanej poza przedziałem <math><t_i,t_{i+m+1}></math> jest bardzo istotna dla modelowania kształtu. Oznacza bowiem lokalność wpływu parametrów. Rozpatrzmy podprzedział <math><t_i,t_{i+m+1}></math> dla <math>t\in (t_i,t_{i+m+1})</math> niezerowe są tylko funkcje <math>N_i^m(t)</math> o indeksach <math>i=j-m, j-m+1, j-m+2, j</math> . W takim przedziale wartość <math>Q(t)</math> , a tym samym kształt krzywej, zależy tylko od punktów kontrolnych <math>P_{j-m}, P_{j-m+1}, P_{j-m+2},…P_j</math> . Z drugiej strony punkt kontrolny <math>P_i</math> wpływa jedynie na fragment krzywej odpowiadający <math>t\in <t_i, t_{i+m+1}></math> . | ||
Indeks <math>j</math> zmienia się od 0 do <math>m</math> , natomiast <math>i</math> od 0 do <math>n</math> . Cały zakres takiej krzywej definiują więc węzły: <math>t_0 \le t_1 \le t_2 \le ... \le t_n_+_m_+_1 </math> . Ale danych jest <math>n+1</math> punktów kontrolnych (de Boora). Punkty <math>P_0, P_1, P_2,…P_m</math> definiują krzywą dla <math>t\in <t_m,t_{m+1}></math> , natomiast punkty <math>P_{n-m}, P_{n-m+1}, P_{n-m+2},…P_n</math> definiują krzywą dla <math>t\in <t_n,t_{n+1}></math> . Węzły <math>t_0,t_1,t_2, | Indeks <math>j</math> zmienia się od 0 do <math>m</math> , natomiast <math>i</math> od 0 do <math>n</math> . Cały zakres takiej krzywej definiują więc węzły: <math>t_0 \le t_1 \le t_2 \le ... \le t_n_+_m_+_1</math> . Ale danych jest <math>n+1</math> punktów kontrolnych (de Boora). Punkty <math>P_0, P_1, P_2,…P_m</math> definiują krzywą dla <math>t\in <t_m,t_{m+1}></math> , natomiast punkty <math>P_{n-m}, P_{n-m+1}, P_{n-m+2},…P_n</math> definiują krzywą dla <math>t\in <t_n,t_{n+1}></math> . Węzły <math>t_0,t_1,t_2,\ldots,t_n</math> oraz <math>t_{n+1},t_{n+2},\ldots,t_{n+m+1}</math> nazywane są węzłami brzegowymi. Jeśli krzywa jest otwarta, to znaczy <math>Q(t_m)\ne Q(t_{n+1})</math> , i <math>t_0=t_1=t_2=...=t_m</math> oraz <math>t_{n+1}=t_{n+2}=...=t_{n+m+1}</math> to krzywa przechodzi przez końcowe punkty kontrolne, czyli <math>Q(t_m)=P_0</math> oraz <math>Q(t_{n+1})=P_n</math> . Podobnie jak było w przypadku krzywych Béziera, styczne do krzywej w punktach końcowych mają kierunek końcowych odcinków łamanej kontrolnej. Dla krzywej zamkniętej przyjmuje się, że punkty de Boora i węzły kontrolne są cykliczne <math>(P_n=P_0)</math>. | ||
|} | |} | ||
Linia 355: | Linia 355: | ||
Metryka Hausdorffa określa odległości między zbiorami. | Metryka Hausdorffa określa odległości między zbiorami. | ||
Jeśli rozpatrzymy dwa zbiory A i B, to odległością d( | Jeśli rozpatrzymy dwa zbiory A i B, to odległością d(A,B) punktu a ze zbioru A od zbioru B jest najmniejsza odległość spośród odległości tego punktu od wszystkich punktów zbioru B. Odległością d(A,B) zbioru A od zbioru B jest to największa odległośc spośród odległości punktu zbioru A od zbioru B. | ||
Metryka Hausdorfa h(A,B) jest określona wyrażeniem: h(A,B)=max(d(A,B), d(B,A)) | Metryka Hausdorfa h(A,B) jest określona wyrażeniem: h(A,B)=max(d(A,B), d(B,A)) | ||
Linia 370: | Linia 370: | ||
Na przykład dla śnieżynki Kocha (dla pojedynczego boku startowego trójkąta !) | Na przykład dla śnieżynki Kocha (dla pojedynczego boku startowego trójkąta !) | ||
aksjomat: '''F''' | aksjomat: '''F''' | ||
reguła produkcji: '''F -> F-F++F-F''' | reguła produkcji: '''F -> F-F++F-F''' | ||
gdzie F oznacza ruch do przodu z rysowaniem, - oznacza obrót w lewo o zadany kąt <math>\alpha</math> , + oznacza obrót w prawo o zadany kąt <math>\alpha</math>. Dla śnieżynki Kocha <math>\alpha</math> wynosi 60 stopni. | gdzie '''F''' oznacza ruch do przodu z rysowaniem, '''-''' oznacza obrót w lewo o zadany kąt <math>\alpha</math> , '''+''' oznacza obrót w prawo o zadany kąt <math>\alpha</math>. Dla śnieżynki Kocha <math>\alpha</math> wynosi 60 stopni. | ||
Paprotka Barnsleya jest chyba najbardziej znanym przykładem wykorzystania gramatyk do modelowania roślin. | Paprotka Barnsleya jest chyba najbardziej znanym przykładem wykorzystania gramatyk do modelowania roślin. | ||
Linia 386: | Linia 388: | ||
L-system można niezależnie uzupełnić o dodatkowe zasady „obowiązujące” roślinę w trakcie wzrostu. Pozwala to symulować naturalne zjawiska takie jak tropizm (naturalne kierowanie się rośliny w kierunku słońca) i geotropizm (reakcja wzrostowa roślin na siłę ciężkości). | L-system można niezależnie uzupełnić o dodatkowe zasady „obowiązujące” roślinę w trakcie wzrostu. Pozwala to symulować naturalne zjawiska takie jak tropizm (naturalne kierowanie się rośliny w kierunku słońca) i geotropizm (reakcja wzrostowa roślin na siłę ciężkości). | ||
|} | |||
---- | |||
{| border="0" cellpadding="4" width="100%" | |||
|width="500px" valign="top"|[[Grafika:GKIW_M6_Slajd_3201v8.png|thumb|500px]] | |||
|valign="top"|Samopodobieństwo roślin jest wynikiem ich wzrostu – w procesie wzrostu rośliny łatwo pokazać powtarzalność odpowiednich struktur. Projektując opis wzrostu (gramatykę) dla danego organizmu należy uwzględnić naturalne cechy tego organizmu. Na przykład dla drzewa byłyby to przede wszystkim: liczba rozgałęzień, wysokość drzewa i długości przyrostów między rozgałęzieniami, grubości konarów i gałęzi, kąty jakie tworzą młode gałęzie ze starymi. Oczywiście wizualizacje powinny także uwzględniać kształty, barwy i faktury poszczególnych elementów – liści, kory, i to na różnych etapach wzrostu. Ponieważ proces symulacji wzrostu organizmu jest dość skomplikowany można wykorzystać zarówno zdjęcia jak i reguły biologiczne, a także porównania uzyskanych efektów z obiektami rzeczywistymi. | |||
Warto zwrócić uwagę na sposób realizacji wzrostu. Naturalny wzrost rzeczywistych roślin jest procesem ciągłym; płynnym. Natomiast symulacja z wykorzystaniem gramatyk jest procesem „skokowym” – realizowane są określone stany odpowiadające kolejnym iteracjom. Prezentowane rysunki pokazują stany wzrostu drzewa w określonych iteracjach. Liczby pod drzewami pokazują liczbę użytych iteracji. | |||
|} | |||
---- | |||
{| border="0" cellpadding="4" width="100%" | |||
|width="500px" valign="top"|[[Grafika:GKIW_M6_Slajd_3202v8.png|thumb|500px]] | |||
|valign="top"|Wizualizacja roślin jest procesem dość złożonym. Warto połączyć różne techniki dla uzyskania dobrych efektów. Prezentowany rysunek pokazuje wykorzystanie rysunku gałązki z liśćmi i faktury kory. Mechanizm opisu samopodobieństwa (budowania gramatyki wzrostu) jest odpowiedzialny za generowanie struktury drzewa. Mechanizm ten produkuje model obiektu akceptowany przez mechanizm wizualizacji z uwzględnieniem oświetlenia i teksturowania. Na tym etapie można maksymalnie wykorzystać jego możliwości. Zastosowanie śledzenia promieni (ray tracingu) pozwala dodatkowo uwzględnić, na przykład, mapy przezroczystości, co w połączeniu z gotowymi rysunkami gałązek z liśćmi daje możliwość prostej realizacji cienia. | |||
|} | |} |
Aktualna wersja na dzień 21:58, 15 wrz 2023
Wykład
![]() |
Literatura
![]() |