GKIW Moduł 7: Różnice pomiędzy wersjami
Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Nie podano opisu zmian |
Nie podano opisu zmian |
||
Linia 176: | Linia 176: | ||
|width="500px" valign="top"|[[Grafika:GKIW_M7_Slajd26.png|thumb|500px]] | |width="500px" valign="top"|[[Grafika:GKIW_M7_Slajd26.png|thumb|500px]] | ||
|valign="top"| | |valign="top"| | ||
'''Bryła wypukła I''' | |||
Zadanie określenia widoczności elementów wielościanu wypukłego można więc rozwiązać na dwa sposoby korzystając z rozwiązań A i B sprawdzających zorientowanie poszczególnych ścian. | |||
|} | |} | ||
---- | ---- | ||
Linia 182: | Linia 186: | ||
|width="500px" valign="top"|[[Grafika:GKIW_M7_Slajd27.png|thumb|500px]] | |width="500px" valign="top"|[[Grafika:GKIW_M7_Slajd27.png|thumb|500px]] | ||
|valign="top"| | |valign="top"| | ||
'''Bryła wypukła II''' | |||
Analizę widoczności w przypadku wielościanu wypukłego, można przeprowadzić opierając się tylko na informacji z przestrzeni rzutu – sposób C. W tym celu należy podzielić wierzchołki rzutu na dwa typy. Pierwszy typ charakteryzuje się tym, że węzeł oraz zewnętrzne krawędzie są widoczne. O pozostałych krawędziach i ich widoczności nie można nic powiedzieć. Drugi typ charakteryzuje się tym , że co prawda nie można stwierdzić czy węzeł jest widoczny czy nie, ale za to wszystkie elementy mają taki sam atrybut. A więc jeśli jakaś jedna krawędź jest widoczna, to cały węzeł i wszystkie jego krawędzie są widoczne. | |||
|} | |} | ||
---- | ---- | ||
Linia 188: | Linia 196: | ||
|width="500px" valign="top"|[[Grafika:GKIW_M7_Slajd28.png|thumb|500px]] | |width="500px" valign="top"|[[Grafika:GKIW_M7_Slajd28.png|thumb|500px]] | ||
|valign="top"| | |valign="top"| | ||
'''Bryła wypukła III''' | |||
Korzystając z klasyfikacji węzłów można zaproponować sposób C wyznaczania widoczności elementów wielościanu wypukłego. Określając widoczność jednego węzła drugiego typu można przenieść ten sam atrybut widoczności do sąsiednich węzłów, przechodząc od jednego węzła do drugiego. W ten sposób powstają dwa komplementarne obrazy. W takim postępowaniu nie jest potrzebna informacja z przestrzeni obiektu. Wystarczy tylko informacja dotycząca rzutu. | |||
|} | |} | ||
---- | ---- | ||
Linia 194: | Linia 206: | ||
|width="500px" valign="top"|[[Grafika:GKIW_M7_Slajd29.png|thumb|500px]] | |width="500px" valign="top"|[[Grafika:GKIW_M7_Slajd29.png|thumb|500px]] | ||
|valign="top"| | |valign="top"| | ||
'''Klasy algorytmów''' | |||
Trzy sposoby rozwiązania problemu widoczności pokazują trzy sposoby wykorzystania informacji, pochodzących albo z przestrzeni obiektu (sceny), albo przestrzeni rzutu, albo obu. Oczywiście o ile w przypadku wielościanu wypukłego ten podział jest bardzo ostry i jednoznaczny, o tyle w przypadku dowolnego innego algorytmu podział będzie zdecydowanie mniej ostry i będzie oznaczał, że dany algorytm w większym stopniu wykorzystuje informację z jednej lub drugiej przestrzeni. | |||
Z drugiej strony często mówi się o precyzji obrazowej lub obiektowej danego algorytmu. Oznacza to, że algorytmy pracujące z precyzją obrazowa wykonują obliczenia z dokładnością urządzenia wyświetlającego (wynikającą z wyświetlania pojedynczego piksela). Algorytmy pracujące z precyzją obiektowa wykonują obliczenia z dokładnością związaną z definicją obiektów, a nie pikseli. | |||
|} | |} | ||
---- | ---- | ||
Linia 200: | Linia 218: | ||
|width="500px" valign="top"|[[Grafika:GKIW_M7_Slajd30.png|thumb|500px]] | |width="500px" valign="top"|[[Grafika:GKIW_M7_Slajd30.png|thumb|500px]] | ||
|valign="top"| | |valign="top"| | ||
'''Bryła wypukła, złożoność algorytmów''' | |||
Aby określić złożoność algorytmów określania widoczności należy zdefiniować miarę złożoności sceny (obiektu). Najczęściej przyjmuje się, liczbę ścian jako taką miarę. | |||
Złożoność trzech wariantów algorytmów eliminacji elementów zasłoniętych dla wielościanu wypukłego jest liniowa. Jest to szczególny przypadek wśród algorytmów określania widoczności. | |||
|} | |} | ||
---- | ---- | ||
Linia 206: | Linia 229: | ||
|width="500px" valign="top"|[[Grafika:GKIW_M7_Slajd31.png|thumb|500px]] | |width="500px" valign="top"|[[Grafika:GKIW_M7_Slajd31.png|thumb|500px]] | ||
|valign="top"| | |valign="top"| | ||
'''Bryła dowolna''' | |||
W przypadku bryły dowolnej lub zestawu dowolnych brył, podział ścian na przednie i tylne nie wystarczy, gdyż taka analiza nie uwzględnia wzajemnego zasłaniania ścian, jakie może wystąpić między obiektami lub ścianami tego samego obiektu. Problem taki występuje także dla zestawu brył wypukłych, tylko dla jednej bryły wypukłej można pokazać prostszy algorytm. Naturalnym podejściem jest analiza wzajemnego położenia ścian, ale w takim przypadku trzeba przeanalizować wszystkie pary ścian (analiza „każdy z każdym”). Prowadzi to oczywiście do kwadratowej złożoności obliczeniowej algorytmu. Najprostszym mechanizmem przyspieszającym takie postępowanie jest test MINMAX czyli „opakowanie” wielokątów prostopadłościanami definiującymi minimum i maksimum po każdej współrzędnej dla danego wielokąta. Porównując wzajemne położenie prostopadłościanów opakowujących (co jest prostsze gdyż jest porównaniem minimów i maksimów współrzędnych) można wyeliminować wiele przypadków, gdy wielościany nie mogą się zasłaniać. Oczywiście takie postępowanie nie zmienia asymptotycznej złożoności obliczeniowej. Test MINMAX jest często stosowany do różnych algorytmów eliminacji elementów zasłoniętych. | |||
Pierwszy algorytm rozstrzygania widoczności dla dowolnych brył, przy założeniu że ściany są trójkątami (a przecież dowolny wielokąt zawsze może zostać rozłożony na zbiór trójkątów) podał Ricci w 1972 roku. Był to algorytm pracujący metodą „każdy z każdym” o kwadratowej złożoności obliczeniowej. | |||
|} | |} | ||
---- | ---- |
Wersja z 09:56, 27 paź 2006
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
Bryła wypukła I Zadanie określenia widoczności elementów wielościanu wypukłego można więc rozwiązać na dwa sposoby korzystając z rozwiązań A i B sprawdzających zorientowanie poszczególnych ścian. |