GKIW Moduł 6a: Różnice pomiędzy wersjami
Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Nie podano opisu zmian |
Nie podano opisu zmian |
||
Linia 138: | Linia 138: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|width="500px" valign="top"|[[Grafika:GK_M6n_Slajd9.png|thumb|500px]] | |width="500px" valign="top"|[[Grafika:GK_M6n_Slajd9.png|thumb|500px]] | ||
|valign="top"| | |valign="top"|W praktyce rzadko kiedy używa się krzywych Béziera wysokiego stopnia. Ponieważ każdy punkt krzywej Béziera zależy od wszystkich punktów kontrolnych, więc w takiej sytuacji trudno byłoby kontrolować kształt krzywej. O wiele prościej jest złożyć całą krzywą z fragmentów, każdy niskiego stopnia. | ||
Rozpatrzmy dwa segmenty krzywych <math>P_0, P_1, P_2, P_3 i R_0, R_1, R_2, R_3</math> , połączone w punkcie <math>P_3 = R_0</math> . | |||
Jeżeli punkty P2, P3=R0, R1 są współliniowe mówimy o ciągłości geometrycznej G1 krzywej (rysunek a). | |||
Jeżeli punkty <math>P_2, P_3=R_0, R_1</math> są współliniowe i sąsiednie odcinki łamanej są równej długości <math>(P_2- P_3)=(R_0-R_1)</math> to mówimy o ciągłości parametrycznej C1 krzywej (rysunek b). | |||
|} | |} | ||
---- | ---- | ||
Linia 144: | Linia 148: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|width="500px" valign="top"|[[Grafika:GK_M6n_Slajd10.png|thumb|500px]] | |width="500px" valign="top"|[[Grafika:GK_M6n_Slajd10.png|thumb|500px]] | ||
|valign="top"| | |valign="top"|Krzywe wymierne Béziera opisane są w przestrzeni jednorodnej. Oznacza to, że analogicznie do przekształceń geometrycznych opisanych macierzowo w przestrzeni jednorodnej, krzywe płaskie będą opisane w R3, natomiast krzywe trójwymiarowe będą opisane w przestrzeni R4. | ||
Krzywa taka ma następujące cechy: | |||
Dana krzywa może mieć nieskończenie wiele reprezentacji we współrzędnych jednorodnych. Pomnożenie wszystkich wag przez tę samą stałą różną od zera nie zmienia krzywej. | |||
Krzywa wymierna jest uogólnieniem krzywej wielomianowej. Dla równej wartości wszystkich wag otrzymujemy krzywą wielomianową Béziera. | |||
Konstrukcja krzywej wymiernej jest niezmiennicza afinicznie. Krzywa wyznaczona na podstawie ciągu punktów kontrolnych jest taka sama jak krzywa wyznaczona na podstawie ciągu punktów kontrolnych poddanych przekształceniom afinicznym. | |||
Zmieniając odpowiednio wagi można uzyskać wszystkie krzywe stożkowe. Ta cecha była nieosiągalna w przypadku krzywych wielomianowych Béziera. | |||
|} | |} | ||
---- | ---- | ||
Linia 150: | Linia 160: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|width="500px" valign="top"|[[Grafika:GK_M6n_Slajd11.png|thumb|500px]] | |width="500px" valign="top"|[[Grafika:GK_M6n_Slajd11.png|thumb|500px]] | ||
|valign="top"| | |valign="top"|Krzywa B-sklejana jest definiowana jako kombinacja liniowa funkcji sklejanych <math>N_i^m(t)</math>o współczynnikach odpowiadających punktom kontrolnym (punktom de Boora). Funkcje sklejane są przedziałami stopnia m, co nie jest związane z liczbą punktów tak jak w przypadku krzywych Béziera. Oznacza to rzeczywiście uniezależnienie stopnia wielomianu opisującego krzywą (oczywiście przedziałami w tym przypadku) od liczby punktów kontrolnych. | ||
Zakłada się, że węzły ti są uporządkowane niemalejąco tzn. <math>t_i<t_{i+1}</math> co oznacza, że mogą istnieć równe węzły (wielokrotne). Przyjmuje się wtedy, że 0/0=0. Takie założenia generalnie definiują krzywą dla węzłów które nie musza być równoodległe. Jednocześnie możliwość dodania (wstawienie) węzła pomiędzy dwa już istniejące, lub zwielokrotnienia węzła daje dodatkowe możliwości wpływania na kształt krzywej. Czasami jednak rozpatruje się krzywe o węzłach równoodległych. | |||
Istnieje algorytm de Boora i Coxa wyznaczania punktów krzywej B-sklejanej (analogiczny do algorytmu de Casteljau krzywej Béziera). Jeśli wyznaczanych jest wiele punktów krzywej to tańszym rozwiązaniem będzie obliczenie współczynników postaci naturalnej wielomianu w kolejnych podprzedziałach i skorzystanie z algorytmu Hornera. | |||
|} | |} | ||
---- | ---- | ||
Linia 156: | Linia 169: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|width="500px" valign="top"|[[Grafika:GK_M6n_Slajd12.png|thumb|500px]] | |width="500px" valign="top"|[[Grafika:GK_M6n_Slajd12.png|thumb|500px]] | ||
|valign="top"| | |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 Pi wpływa jedynie na fragment krzywej odpowiadający <math>t\in t_i, t_{i+m+1}</math> . | ||
Indeks j zmienia się od 0 do m , natomiast i od 0 do n . Cały zakres takiej krzywej definiują więc węzły: <math>t_0<t_1<t_2<...<t_n_+_m_+_1</math> . Ale danych jest n+1 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 Pn-m, Pn-m+1, Pn-m+2,…Pn definiują krzywą dla <math>t\in <t_n,t_{n+1}></math> . Węzły <math>t_0,t_1,t_2,...,t_n</math> oraz <math>t_{n+1},t_{n+2},...,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 i 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 162: | Linia 177: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|width="500px" valign="top"|[[Grafika:GK_M6n_Slajd13.png|thumb|500px]] | |width="500px" valign="top"|[[Grafika:GK_M6n_Slajd13.png|thumb|500px]] | ||
|valign="top"| | |valign="top"|Wymierne krzywe B-sklejane (ang. Non-Uniform Rational B-Splines) to rozwiązanie, które łączy zalety krzywych Béziera i krzywych B-sklajenych. | ||
Krzywe wymierne dają możliwość wykreślenia dowolnej krzywej stożkowej. | |||
.Konstrukcja wykorzystująca funkcje sklejane pozwala opisywać krzywą wielomianami, których stopień jest niezależny od liczby punktów kontrolnych. | |||
Wpływ punktu kontrolnego na kształt krzywej istnieje tylko w zakresie lokalnym. | |||
Dodatkowo wagi każdego punktu kontrolnego pozwalają na precyzyjne zmiany kształtu krzywej (też lokalnie). | |||
Krzywe wymierne są niezmiennicze względem przekształceń obrotu, skalowania i przesunięcia oraz przekształcenia perspektywicznego punktów kontrolnych. | |||
|} | |} | ||
---- | ---- | ||
Linia 168: | Linia 189: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|width="500px" valign="top"|[[Grafika:GK_M6n_Slajd14.png|thumb|500px]] | |width="500px" valign="top"|[[Grafika:GK_M6n_Slajd14.png|thumb|500px]] | ||
|valign="top"| | |valign="top"|Właściwości powierzchni są analogiczne do właściwości krzywych konstruowanych z wykorzystaniem tych samych funkcji bazowych. Z drugiej strony przyjmując stałość jednego parametru (u lub v) otrzymujemy krzywą (rodzinę krzywych dla różnych wartości parametru. | ||
|} | |} | ||
---- | ---- | ||
Linia 174: | Linia 195: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|width="500px" valign="top"|[[Grafika:GK_M6n_Slajd15.png|thumb|500px]] | |width="500px" valign="top"|[[Grafika:GK_M6n_Slajd15.png|thumb|500px]] | ||
|valign="top"| | |valign="top"|Przedstawione tutaj sposoby modelowania kształtu krzywej i powierzchni należą do najbardziej uniwersalnych i najczęściej stosowanych.. Istnieje jednak wiele innych reprezentacji. | ||
Wykorzystując bazę wielomianów Hermite’a otrzymamy krzywe i powierzchnie Hermite’a. | |||
Płaty Coonsa są definiowane za pomocą czterech krzywych brzegowych mających wspólne punkty narożne oraz interpolacji między nimi. | |||
Powierzchnie Gordona są uogólnieniem płatów Coonsa,. definiują powierzchnię za pomocą dwóch wzajemnie przecinających się rodzin krzywych. | |||
Stosowane jest również modelowanie kształtu powierzchni w oparciu o fragmenty trójkątne. Zarówno w postaci powierzchni Béziera jak i B-sklejanej. | |||
|} | |} | ||
---- | ---- | ||
Linia 180: | Linia 206: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|width="500px" valign="top"|[[Grafika:GK_M6n_Slajd16.png|thumb|500px]] | |width="500px" valign="top"|[[Grafika:GK_M6n_Slajd16.png|thumb|500px]] | ||
|valign="top"| | |valign="top"|Zastosowania CAD/CAM, zastosowania symulacyjne często wymagają definicji obiektów trójwymiarowych, które odzwierciedlałyby pewne wybrane cechy fizyczne. We wspomaganiu projektowania ważne staje się na przykład rozgraniczenie na powierzchnie wewnętrzne i zewnętrzne, położenie środka ciężkości czy objętość obiektu. Oprogramowanie wykorzystywane w tego typu zastosowaniach powinno dawać możliwość edycji (wprowadzenia i późniejszego poprawiania) kształtu obiektu i możliwość efektywnego przechowywania opisu obiektu. Zwykle wymagane jest także współdziałanie modułu edycji z programami specjalistycznymi w zakresie wyznaczania parametrów fizycznych. Oczywiście modelowanie i edycja powinno być efektywne to znaczy dawać możliwość łatwego definiowania opisu skomplikowanych elementów. Potrzeba opisu spełniającego takie warunki – reprezentacji obiektu – doprowadziła do powstania kilku różnych metod reprezentacji wymagających niezależnego omówienia. | ||
|} | |} | ||
---- | ---- | ||
Linia 186: | Linia 212: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|width="500px" valign="top"|[[Grafika:GK_M6n_Slajd17.png|thumb|500px]] | |width="500px" valign="top"|[[Grafika:GK_M6n_Slajd17.png|thumb|500px]] | ||
|valign="top"| | |valign="top"|W zasadzie można byłoby stwierdzić, że oczekiwane właściwości końcowe projektu i wyobraźnia projektantów powinna być jedynymi ograniczeniami narzuconymi na proces wspomagania projektowania. W takim razie przez obiekt graficzny należałoby rozumieć cokolwiek, co da się narysować przy pomocy komputera. Wydaje się jednak, że celem nie jest swoboda projektowania ale efekt końcowy jakim jest realizacja fizyczna danego obiektu. I z tego powodu bardzo często wprowadza się pewne ograniczenia reprezentacji. | ||
Zaproponowany zestaw właściwości bryły jest pewnym kompromisem między swobodą projektowania a zastosowaniami praktycznymi, kompromisem, który daje przy tym możliwość efektywnego wspomagania projektowania. Przykładem jak należy rozumieć ten kompromis jest jednorodność topologiczna. Z jednej strony nie ma w zasadzie żadnych przeciwwskazań w grafice komputerowej aby tworzyć obiekty niejednorodne (np. krzesło w postaci trójwymiarowego sześciennego siedziska połączonego z dwuwymiarowym prostokątnym oparciem). Ale jednocześnie ujednolicenie opisu może uprościć podejście do różnie definiowanych elementów. Natomiast jeśli popatrzymy na problem od strony praktycznej ; technologicznie realizacyjnej, to okaże się, że problem w zasadzie nie istnieje ponieważ żyjemy wśród obiektów trójwymiarowych jednorodnych topologicznie i praktyczne wykonanie prostokątnego oparcie dla rozpatrywanego krzesła i tak będzie wymagało określenia trzeciego wymiaru – jego grubości. Jeśli już nawet dla spełnienia wizji projektanta jest niezbędne istnienie niejednorodności topologicznej to prościej jest założyć, że w ramach jednej bryły zachowujemy jednorodność i w ostateczności dopuszczamy zestawienie różnych brył w ramach jednego procesu. Chociaż i tak w efekcie końcowym na etapie technologii zostanie to ujednolicone. | |||
Drugim elementem opisu właściwości bryły na który warto zwrócić uwagę jest domknięcie bryły. To co widzimy obserwując dowolny przedmiot jest efektem odbicia światła od powierzchni tego przedmiotu. Jeśli zostanie on przekrojony to zobaczymy powierzchnię przekroju – to znaczy będzie to nowy brzeg powstały przecięcia. Powierzchnia brzegu obiektu jest więc bardzo istotna w procesie rysowania – wizualizacji obiektu. | |||
|} | |} | ||
---- | ---- | ||
Linia 192: | Linia 222: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|width="500px" valign="top"|[[Grafika:GK_M6n_Slajd18.png|thumb|500px]] | |width="500px" valign="top"|[[Grafika:GK_M6n_Slajd18.png|thumb|500px]] | ||
|valign="top"| | |valign="top"|Proces rozwiązania problemu domknięcia bryły nazywany jest regularyzacją zbioru. Jeśli rozpatrzymy dowolny obiekt jako pewien zbiór punktów to można wyróżnić punkty wewnętrzne tworzące zbiór otwarty, punkty brzegowe (punkty których odległość zarówno od obiektu jak i jego uzupełnienia jest równa zeru) oraz zbiór domknięty zawierający wszystkie jego punkty wewnętrzne i wszystkie brzegowe. Rysunek pokazuje regularyzację zbioru. Kolejne etapy to: domknięcie poprzez przejęcie do wnętrza ewentualnych punktów zdefiniowanych jako brzeg (np. w wyniku jakiejś operacji na zbiorach), a które w rzeczywistości znajdują się we wnętrzu. Otwarcie zbioru pozwalające wyeliminować punkty brzegowe niepołączone z wnętrzem. Ponowne domknięcie dające regularyzację zbioru. | ||
|} | |} | ||
---- | ---- | ||
Linia 198: | Linia 228: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|width="500px" valign="top"|[[Grafika:GK_M6n_Slajd19.png|thumb|500px]] | |width="500px" valign="top"|[[Grafika:GK_M6n_Slajd19.png|thumb|500px]] | ||
|valign="top"| | |valign="top"|Konstruktywna geometria brył (ang. constructive solid geometry – CSG) jest metodą reprezentacji obiektów polegająca na definicji obiektu jako wyniku regularyzowanych operacji boolowskich. Obiekt jest zapisywany (pamiętany) jako drzewo o odpowiedniej budowie ( z określonymi operacjami w węzłach i prymitywami w liściach | ||
|} | |} | ||
---- | ---- | ||
Linia 204: | Linia 234: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|width="500px" valign="top"|[[Grafika:GK_M6n_Slajd20.png|thumb|500px]] | |width="500px" valign="top"|[[Grafika:GK_M6n_Slajd20.png|thumb|500px]] | ||
|valign="top"| | |valign="top"|Aby zdefiniować obiekt trzeba podać z jakich elementów go zbudować (z jakich prymitywów jest on skonstruowany) oraz podać w jaki sposób prymitywy te konstruują obiekt (podać drzewo operacji koniecznych do uzyskania obiektu). | ||
|} | |} | ||
---- | ---- | ||
Linia 210: | Linia 240: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|width="500px" valign="top"|[[Grafika:GK_M6n_Slajd21.png|thumb|500px]] | |width="500px" valign="top"|[[Grafika:GK_M6n_Slajd21.png|thumb|500px]] | ||
|valign="top"| | |valign="top"|Zestaw prymitywów należy rozumieć bardzo szeroko. Z jednej strony jest to zestaw „klocków” potrzebny do definicji danego zestawu elementów na scenie. Z drugiej strony zestaw ten powinien być na tyle szeroki aby nie stwarzać problemów przy definicji dowolnych elementów sceny w ramach pewnej klasy. Można na przykład założyć że scena będzie zawierała tylko elementy wielościenne. Wtedy naturalnym byłoby zestawienie zbioru prymitywów w postaci wzorców każdego rozpatrywanego typu wielościanu. Można się zastanowić, czy wygodniejszym nie byłoby użycie tylko jednego prymitywu – półprzestrzeni. W takiej sytuacji za pomocą różnych ustawień półprzestrzeni i operacji boolowskich (regularyzowanych) można byłoby skonstruować dowolny wielościan bez żadnych ograniczeń i co ważne, zawsze w taki sam sposób. Jednak w takiej sytuacji należałoby pamiętać o tym, że w przeciwieństwie do operacji na klockach będących bryłami, operacje przeprowadzane na półprzestrzeniach mogą w ogóle nie dawać bryły. I regularyzacja operacji w takiej sytuacji nie pomoże. Wybór prymitywów jest sprawą bardzo ważną . Powinien być dokonany w zależności od typu obiektów jakie pojawiają się na scenie oraz możliwości systemu modelowania i celów dla jakich został on zbudowany.. | ||
|} | |} | ||
---- | ---- | ||
Linia 216: | Linia 246: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|width="500px" valign="top"|[[Grafika:GK_M6n_Slajd22.png|thumb|500px]] | |width="500px" valign="top"|[[Grafika:GK_M6n_Slajd22.png|thumb|500px]] | ||
|valign="top"| | |valign="top"|Konstruktywna geometria brył jest techniką, w której poważnym problemem jest definicja brzegu i wyznaczenie go po wykonaniu operacji boolowskich. Konieczność stosowania operacji regularyzowanych pokazuje rysunek. Jeśli wykonamy iloczyn lub różnicę brył A i B, to mogą pojawić się obszary dla których nie będzie zdefiniowany brzeg, ale również obszary dla których brzeg będzie określony niejednoznacznie. Zastosowanie regularyzacji zbioru (regularyzowanych operatorów boolowskich) zapewnia poprawność konstrukcji. | ||
|} | |} | ||
---- | ---- | ||
Linia 222: | Linia 252: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|width="500px" valign="top"|[[Grafika:GK_M6n_Slajd23.png|thumb|500px]] | |width="500px" valign="top"|[[Grafika:GK_M6n_Slajd23.png|thumb|500px]] | ||
|valign="top"| | |valign="top"|Reprezentacja brzegowa (ang. b-rep – boundary representation) opisuje obiekt za pośrednictwem opisu jego brzegu – powierzchni ograniczającej obiekt. Możemy tu mieć do czynienia z modelem wielościennym (ang. polygonal representation) lub powierzchniowym, w którym kształt brzegu obiektu jest opisany parametrycznie. | ||
Dla modelu wielościennego istotnym problemem jest organizacja struktury danych zapamiętującej obiekt. Realizowane jest to w postaci list lub tablic ścian, krawędzi i wierzchołków. Pamiętanie powiązań między elementami obiektów prowadzi do struktur redundantnych. Wiąże się to oczywiście ze wzrostem kosztu pamięciowego. Czasami celowo wprowadzane są struktury redundantne w celu przyspieszenia wyszukania elementów. Takimi strukturami są na przykład DCEL (double connected edg list) i struktura krawędziowa Baumgarta. Są to struktury, w których deskryptory krawędzi zawierają wskazania na sąsiednie krawędzie węzły i ściany. | |||
|} | |} | ||
---- | ---- | ||
Linia 228: | Linia 260: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|width="500px" valign="top"|[[Grafika:GK_M6n_Slajd24.png|thumb|500px]] | |width="500px" valign="top"|[[Grafika:GK_M6n_Slajd24.png|thumb|500px]] | ||
|valign="top"| | |valign="top"|Model wielościenny może być reprezentowany dowolną siatką wielokątów. Rodzaj siatki zależy od budowy obiektu i sposobu jego definiowania. Przypisanie położenia poszczególnym punktom i powiązań tworzących siatkę może być realizowane ręcznie przez konstruktora. Może wynikać z matematycznego opisu obiektu – można wykorzystać charakterystyczne przekroje obiektu, albo linie stałego parametru. Może to być zrealizowane automatycznie na podstawie pomiarów położenia i kształtu obiektu rzeczywistego lub jego modelu. Często wykorzystywane są siatki trójkątów, gdyż przy dowolnym rozmieszczeniu węzłów siatka taka gwarantuje, że każde jej oczko zawsze będzie figurą płaską – wielokątem. | ||
Dla każdego wielościanu zwykłego spełniona jest reguła Eulera. Rozszerzoną klasę obiektów - rozmaitości dwuwymiarowych obowiązuje uogólniona (rozszerzona) reguła Eulera. Należy jednak pamiętać że spełnienie tych warunków jest warunkiem koniecznym ale niewystarczającym przynależności do odpowiedniej klasy. Na przykład sześcian, do którego krawędzi doczepiono jeszcze jeden prostokąt nie jest już wielościanem zwykłym ale regułę Eulera (podstawową) spełnia. | |||
Reprezentacja brzegowa jest czasem łączona w systemach modelowania z konstrukcyjną geometrią brył. | |||
|} | |} | ||
---- | ---- | ||
Linia 234: | Linia 271: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|width="500px" valign="top"|[[Grafika:GK_M6n_Slajd25.png|thumb|500px]] | |width="500px" valign="top"|[[Grafika:GK_M6n_Slajd25.png|thumb|500px]] | ||
|valign="top"| | |valign="top"|Reprezentacja z przesunięciem (ang. sweet) nazywane czasem zagarnianiem lub zakreślaniem przestrzeni buduje obiekt przez przemieszczenie przekroju wzdłuż pewnej trajektorii. Obiekt tworzą wszystkie punkty znajdujące się na drodze przekroju. Najprostsze do takiej definicji są obiekty podobne do przedstawionego na rysunku. Ale również kula torus czy spirale są proste do takiego definiowania. Dla bardziej skomplikowanych kształtów można zaproponować możliwość zmiany kształtu w funkcji trajektorii. | ||
Reprezentacja z przesunięciem nie stanowi samodzielnego sposobu opisu. Najczęściej jest łączona z reprezentacją powierzchniową i służy do definicji położenia węzłów siatki wielokątów. Ewentualnie (rzadziej) jest łączona z konstrukcyjną geometrią brył. | |||
|} | |} | ||
---- | ---- | ||
Linia 240: | Linia 279: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|width="500px" valign="top"|[[Grafika:GK_M6n_Slajd26.png|thumb|500px]] | |width="500px" valign="top"|[[Grafika:GK_M6n_Slajd26.png|thumb|500px]] | ||
|valign="top"| | |valign="top"|Podział przestrzeni jest sposobem opisu polegającym na rozkładzie obiektu na elementy składowe, prostsze. | ||
Woksel jest najmniejszym elementem przestrzeni analogicznym do piksela na płaszczyźnie. Można zdefiniować obiekt wskazując, które woksele on zajmuje. Taka reprezentacja jest dekompozycją na komórki, które tworzą regularną siatkę w przestrzeni. Podstawową cechą reprezentacji tego typu jest aproksymacja kształtu z zadana rozdzielczością. Struktura danych opisująca tak dekomponowaną bryłę będzie listą zajętych komórek. | |||
Podobny efekt można uzyskać strukturą hierarchiczną – drzewem ósemkowym wskazując w przestrzeni kolejne prostopadłościenne elementy będąca wielokrotnością woksela. W tym przypadku jednak struktura danych (drzewo ósemkowe) da efektywniejszy sposób zapisu (mniejszy koszt pamięciowy). Natomiast aproksymacja kształty z zadana rozdzielczością wokselową będzie identyczna. | |||
Alternatywą dla drzewa ósemkowego mogłoby być drzewo podziału binarnego (ang. BSP tree – binary space partitioning tree), w którym na każdym etapie podziału można wskazać którą półprzestrzeń reprezentuje dany fragment obiektu. Drzewa tego typu nie są jednak stosowane jako samodzielne systemy modelowania. SA natomiast wykorzystywane w algorytmach eliminacji elementów zasłoniętych | |||
|} | |} | ||
---- | ---- | ||
Linia 246: | Linia 289: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|width="500px" valign="top"|[[Grafika:GK_M6n_Slajd27.png|thumb|500px]] | |width="500px" valign="top"|[[Grafika:GK_M6n_Slajd27.png|thumb|500px]] | ||
|valign="top"| | |valign="top"|Podsumowując zaprezentowane sposoby reprezentacji obiektów można porównać ich podstawowe właściwości. | ||
Dokładność. | |||
Jeśli na scenie znajdują się obiekty wielościenne to reprezentacje wielościenne mogą dać dokładny opis obiektu. W pozostałych przypadkach tylko reprezentacja powierzchniowa z opisem kształtu za pomocą powierzchni Béziera, B-sklejanych, lub funkcji wymiernych może dać dokładny opis. Z reguły mamy do czynienia z pewną aproksymacją zależną np. od rozdzielczości siatki wokseli. | |||
Dziedzina (zakres stosowania). | |||
Podział przestrzeni może być stosowany do dowolnych obiektów, przy czym zawsze będzie istniał problem aproksymacji zależny od siatki wokselowej. Pozostałe metody reprezentacji mogą być stosowane do określonej klasy obiektów. Na przykład w konstrukcyjnej geometrii brył klasa reprezentowanych obiektów bardzo silnie zależy od zastosowanego zestawu prymitywów. | |||
Jednoznaczność/unikatowość. | |||
W zasadzie tylko podział przestrzeni za pomocą drzewa ósemkowego i reprezentacja wokselowa zapewniają unikatowośc reprezentacji w tym sensie, że istnieje tylko jeden zestaw wokseli reprezentujący dany obiekt. W pozostałych systemach modelowania istnieje wiele możliwości opisu tego samego obiektu. Szczególnym przypadkiem jest konstruktywna geometria brył gdzie dany obiekt można uzyskać nie tylko korzystając z różnych drzew, ale także z różnych zestawów prymitywów. | |||
Poprawność. | |||
Podział przestrzeni jest zawsze poprawny – zawsze uzyskamy poprawny fragment przestrzeni. Pytanie oczywiście czy jest to ten fragment o który chodziło konstruktorowi. W pozostałych przypadkach wymagane jest sprawdzenie czy wynik definiowania/operacji jest poprawnym obiektem w danej klasie. Najtrudniejsze do sprawdzenia są opisy reprezentacji powierzchniowej. | |||
Efektywność. | |||
Najprostsze w reprezentacji są metody wokselowe, gdyż pozwalają na szybkie manipulowanie takimi obiektami. Również konstruktywna geometria brył daje prosty nieprzetworzony (wymagający przetworzenia w trakcie np. rysowania) mechanizm, pozwalający dodatkowo na szybką modyfikacje obiektów. | |||
|} | |} | ||
---- | ---- | ||
Linia 252: | Linia 312: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|width="500px" valign="top"|[[Grafika:GK_M6n_Slajd28.png|thumb|500px]] | |width="500px" valign="top"|[[Grafika:GK_M6n_Slajd28.png|thumb|500px]] | ||
|valign="top"| | |valign="top"|Wiele obiektów naturalnych (rośliny, formy skalne, linia brzegowa, zbocza gór itp.) a także sztucznych (np. polimery) ma cechę samopodobieństwa. Obrazy tych obiektów są podobne bez względu na skalę w jakiej, są oglądane. | ||
Często klasyfikuje się to pojęcie | |||
Samopodobieństwo dokładne – mówimy o nim wtedy, kiedy występuje wierna kopia powiększonego lub pomniejszonego fragmentu. Taką cechę mają fraktale IFS. | |||
Quasi- samopodobieństwo – gdy występuje przybliżona kopia powiększonego lub pomniejszonego fragmentu. Charakterystyczne dla wielu fraktali definiowanych pewną zależnością rekurencyjną definiującą położenie punktów w przestrzeni. | |||
Samopodobieństwo statystyczne – tę cechę mają fraktale losowe. | |||
Rysunek z lewej strony pokazuje jeden z najbardziej znanych fraktali - tak zwany zbiór Mandelbrota. Zbiór ten powstaje przez interpretację barwami właściwości ciągu liczb zespolonych postaci <math>z_{i+1}=z_i+c</math> . | |||
|} | |} | ||
---- | ---- | ||
Linia 258: | Linia 325: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|width="500px" valign="top"|[[Grafika:GK_M6n_Slajd29.png|thumb|500px]] | |width="500px" valign="top"|[[Grafika:GK_M6n_Slajd29.png|thumb|500px]] | ||
|valign="top"| | |valign="top"|Twórcą geometrii fraktalnej i samego pojęcia fraktal jest B.Mandelbrot - francuski matematyk polskiego pochodzenia. Przykładem najprostszym iteracyjnie generowanego fraktala jest tal zwana śnieżynka Kocha zaproponowana przez H. von Kocha w 1904 roku. W każdym kroku iteracji każdy odcinek jest dzielony na trzy części (segmenty) po czym w miejsce jednego segmentu środkowego są wstawiane dwa segmenty tworząc z podstawą trójkąt równoboczny. Przy liczbie iteracji dążącej do nieskończoności otrzymuje się figurę, której każdy fragment jest zbudowany dokładnie na tej samej zasadzie (samopodobieństwo) i jednocześnie tak uzyskana krzywa ma nieskończoną długość oraz nie ma stycznej w żadnym punkcie. | ||
Problemem pozostaje wymiar takiej krzywej. Dla fraktali określa się wymiar Hausdorffa. F.Hausdorf – matematyk niemiecki zaproponował pojęcie wymiaru jako miarę wzrostu liczby kul (lub kół na płaszczyźnie) o promieniu potrzebnych do pokrycia danego zbioru przy dążącym do zera. Wymiar Hausdorffa nigdy nie jest mniejszy niż wymiar topologiczny danego zbioru. Dla fraktali jest liczbą ułamkową. Sniezynka Kocha ma wymiar d=log4/log3=1,2618… | |||
Fraktale stosuje się w grafice komputerowej do modelowania kształtu obiektów naturalnych wykazujących samopodobieństwo. Przykładem może być modelowanie krajobrazu. Fourier, Fussel i Carpenter zaproponowali zastosowanie iteracyjnego podziału do generowania fraktalnej góry. Jeśli podstawę góry będziemy dzielić systematycznie na pół, to po odpowiedniej liczbie iteracji uzyskamy punkty o zadanej dokładności. Wysokość dla każdego punktu podziału określa się na podstawie wysokości punktów poprzedniego kroku iteracji oraz pewnej funkcji zaburzenia. W zależności od przyjętej funkcji zaburzenia można w ten sposób otrzymać odpowiedni charakter zmian wysokości (łagodne pagórki lub ostre szczyty). | |||
Innym zastosowaniem fraktali w grafice i przetwarzaniu obrazów jest kompresja fraktalna. | |||
|} | |} | ||
---- | ---- | ||
Linia 264: | Linia 337: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|width="500px" valign="top"|[[Grafika:GK_M6n_Slajd30.png|thumb|500px]] | |width="500px" valign="top"|[[Grafika:GK_M6n_Slajd30.png|thumb|500px]] | ||
|valign="top"| | |valign="top"|Przekształcenie afiniczne nazywamy zwężającym jeśli długość każdego odcinka po przekształceniu jest mniejsza niż przed przekształceniem. | ||
Metryka Hausdorffa określa odległości między zbiorami. | |||
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)) | |||
Atraktory rozpatrywane są w przestrzeni metrycznej zupełnej, w której obowiązuje metryka Hausdorffa. | |||
|} | |} | ||
---- | ---- | ||
Linia 270: | Linia 350: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|width="500px" valign="top"|[[Grafika:GK_M6n_Slajd31.png|thumb|500px]] | |width="500px" valign="top"|[[Grafika:GK_M6n_Slajd31.png|thumb|500px]] | ||
|valign="top"| | |valign="top"|L-systemy zwane także L-układami służą, przede wszystkim, do opisu wzrostu roślin. Bardzo trudno byłoby klasycznymi metodami modelowania (np. CSG lub reprezentacja powierzchniowa) wygenerować obrazy roślin – gałęzi, liści itp. Elementy roślin zachowują samopodobieństwo i podlegaja pewnym regułom związanym z rozwojem - wzrostem rośliny. A.Lindenmayer zaproponował w 1969 roku sposób opisu wzrostu oparty na prostych regułach gramatycznych. System ten był później rozwijany, między innymi przez A.R.Smitha i P.Prusinkiewicza. | ||
Na tej samej zasadzie można opisać grafikę żółwia rozkładając ruch pióra na proste reguły sterowania. | |||
Warto zwrócić uwagą na fakt, że również fraktale takie jak śnieżynka Kocha czy dywan Sierpińskiego można wygenerować za pomoca L-systemu. | |||
Na przykład dla śnieżynki Kocha (dla pojedynczego boku startowego trójkąta !) | |||
aksjomat: '''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. | |||
Paprotka Barnsleya jest chyba najbardziej znanym przykładem wykorzystania gramatyk do modelowania roślin. | |||
|} | |} | ||
---- | ---- | ||
Linia 276: | Linia 367: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|width="500px" valign="top"|[[Grafika:GK_M6n_Slajd32.png|thumb|500px]] | |width="500px" valign="top"|[[Grafika:GK_M6n_Slajd32.png|thumb|500px]] | ||
|valign="top"| | |valign="top"|Pierwotne języki równoległych gramatyk grafowych zostały przez Lindenmayera rozszerzone o dodanie nawiasów (różnych, co daje możliwość rozróżnienia operacji) pozwalających na zagnieżdżanie operacji z wykorzystaniem stosu. | ||
W opisie reguł produkcji wykorzystuje się takie symbole atrybutów jak długość i szerokość odcinka czy barwę. Pozwala to dość swobodnie definiować reguły wzrostu. | |||
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). | |||
|} | |} | ||
---- | ---- | ||
Linia 282: | Linia 377: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|width="500px" valign="top"|[[Grafika:GK_M6n_Slajd33.png|thumb|500px]] | |width="500px" valign="top"|[[Grafika:GK_M6n_Slajd33.png|thumb|500px]] | ||
|valign="top"| | |valign="top"|Modelowanie wolumetryczne jest próbą rozwiązania problemu modelowania i wizualizacji zjawisk, które nie dają się opisać w prosty sposób klasycznymi metodami, a które to zjawiska związane są z objętościowym rozproszeniem światła. Efekt taki powstaje zazwyczaj na skutek istnienia pewnego dodatkowego czynnika zmieniającego warunki rozchodzenia się światła. Przykładem może być mgła, chmury, wydobywający się gaz lub para wodna. | ||
Podobne efekty mogą powstawać przy przechodzeniu światła przez niejednorodne ośrodki półprzezroczyste np. powierzchnię morza. | |||
Analogicznie modeluje się przekroje na potrzeby prześwietleń w medycynie. W przypadku takich badań jak tomografia komputerowa (CT) czy rezonans magnetyczny (MRI) jest to związane z wizualizacją trójwymiarowej funkcji pochłaniania promieniowania. Funkcja ta określona jest dla każdego punktu przestrzeni pokazując właściwości badanej tkanki. | |||
Stosuje się następujące metody: | |||
• Metody uproszczone. Wizualizacja za pomocą tekstur (dwuwymiarowych rzadziej trójwymiarowych). Wizualizacja za pomocą półprzepuszczalnych płaszczyzn (jednej lub kilku) z nałożonymi obrazami zjawiska. Metody te dają dobre efekty i są efektywnie obliczeniowo, ale związane są tylko z określonym kierunkiem patrzenia. Metody takie stosuje się do uproszczonego modelowania mgły i chmur oraz podobnych zjawisk (np. w grach komputerowych). | |||
• Metoda próbek w przestrzeni (particle tracing) polegająca na umieszczeniu (zazwyczaj półprzezroczystych) elementów (kul, walców, sześcianów) w przestrzeni, mających rozpraszać światło – lub generalnie zmieniać warunki jego rozchodzenia się. Metodami takimi wizualizuje się chmury, mgłę i podobne zjawiska. | |||
• Metoda analizy objętościowej. (volume rendering) polegająca na przypisaniu właściwości rozpraszających określonym punktom w przestrzeni. Jest to realizowane najczęściej w postaci wokselowej – każdy weksel ma określone parametry związane z przechodzeniem światła. Podczas śledzenia promieni wyznaczane są woksele na drodze promienia i ich parametry wpływają na barwę promienia. Analogicznie jest analizowane tak zwane światło wolumetryczne (volume light). Metody te stosuje się przede wszystkim w medycynie. Czasami stosuje się je do modelowania mgły lub chmur. Światło wolumetryczne pozwala symulować reflektory świecące we mgle, kurz unoszący się w powietrzu i rozpraszający światło w delikatny sposób, zadymione pomieszczenia. | |||
• Metody uproszczonego opisu fizycznego zjawiska. Opis szumu trójwymiarowego i turbulencji, wykorzystanie szumu Perlina. Takie metody najczęściej stosuje się do wizualizacji płomienia, dymu, chmur, tworzenia efektu ognia i wybuchu. Metody te są często realizowane w postaci złożonej tekstury trójwymiarowej.. | |||
Warto zwrócić uwagę na funkcję szumu opracowaną przez K.Perlina w 1985 roku (uzupełniona w 2002). Funkcja ta jest gładką interpolacją wektora gradientu między węzłami siatki. Jest ona prosta w implementacji i daje zaskakująco dobre efekty. Z tego powodu szum Perlina jest często dodawany do tekstur różnych powierzchni aby podkreślić drobne niejednorodności rzeczywistych obiektów i nadać naturalny wygląd. | |||
|} | |} | ||
---- | ---- |
Wersja z 11:30, 21 lis 2006
![]() |
</math>