Grafika komputerowa Wykład 9 Algorytmy wyznaczania obiektów zasłonietych

Podobne dokumenty
VIII. USUWANIE NIEWIDOCZNYCH LINII I POWIERZCHNI

Animowana grafika 3D. Opracowanie: J. Kęsik.

WYKŁAD 3 WYPEŁNIANIE OBSZARÓW. Plan wykładu: 1. Wypełnianie wieloboku

GEOMETRIA PRZESTRZENNA (STEREOMETRIA)

Grafika komputerowa Wykład 6 Krzywe, powierzchnie, bryły

Grafika inżynierska geometria wykreślna. 5. Wielościany. Punkty przebicia. Przenikanie wielościanów.

1 Wstęp teoretyczny. Temat: Obcinanie odcinków do prostokąta. Grafika komputerowa 2D. Instrukcja laboratoryjna Prostokąt obcinający

Grafika komputerowa Wykład 2 Algorytmy rastrowe

Grafika komputerowa Wykład 8 Modelowanie obiektów graficznych cz. II

Co należy zauważyć Rzuty punktu leżą na jednej prostej do osi rzutów x 12, którą nazywamy prostą odnoszącą Wysokość punktu jest odległością rzutu

STEREOMETRIA CZYLI GEOMETRIA W 3 WYMIARACH

w jednym kwadrat ziemia powietrze równoboczny pięciobok

V Konkurs Matematyczny Politechniki Białostockiej

Plan wykładu. Wykład 3. Rzutowanie prostokątne, widoki, przekroje, kłady. Rzutowanie prostokątne - geneza. Rzutowanie prostokątne - geneza

Geometria wykreślna. 6. Punkty przebicia, przenikanie wielościanów. dr inż. arch. Anna Wancław. Politechnika Gdańska, Wydział Architektury

1. Prymitywy graficzne

Plan wynikowy, klasa 3 ZSZ

0. OpenGL ma układ współrzędnych taki, że oś y jest skierowana (względem monitora) a) w dół b) w górę c) w lewo d) w prawo e) w kierunku do

Grafika komputerowa Wykład 4 Geometria przestrzenna

Trójwymiarowa grafika komputerowa rzutowanie

3.3. dwie płaszczyzny równoległe do siebie α β Dwie płaszczyzny równoległe do siebie mają ślady równoległe do siebie

9. Podstawowe narzędzia matematyczne analiz przestrzennych

Grafika inżynierska geometria wykreślna. 3. Elementy wspólne. Cień jako rzut środkowy i równoległy. Transformacja celowa.

MATEMATYKA KLASA II GIMNAZJUM - wymagania edukacyjne. DZIAŁ Potęgi

Grafika Komputerowa Wykład 4. Synteza grafiki 3D. mgr inż. Michał Chwesiuk 1/30

WYMAGANIA EDUKACYJNE Z MATEMATYKI W KLASIE DRUGIEJ GIMNAZJUM. rok szkolny 2016/2017

Algorytmy grafiki rastrowej. Mirosław Głowacki Wykład z Grafiki Komputerowej

PLANIMETRIA CZYLI GEOMETRIA PŁASZCZYZNY CZ. 1

Stereometria bryły. Wielościany. Wielościany foremne

str 1 WYMAGANIA EDUKACYJNE ( ) - matematyka - poziom podstawowy Dariusz Drabczyk

Wprowadzenie do grafiki maszynowej. Wprowadzenie do algorytmów obcinania i okienkowania

WYMAGANIA EDUKACYJNE Z MATEMATYKI KLASA II GIMNAZJUM Małgorzata Janik

WYMAGANIA NA POSZCZEGÓLNE STOPNIE KLASA II GIMNAZJUM

Zadanie I. 2. Gdzie w przestrzeni usytuowane są punkty (w której ćwiartce leży dany punkt): F x E' E''

ZAKRES WYMAGAŃ Z MATEMATYKI DLA KLASY II GIMNAZJUM

Wymagania edukacyjne z matematyki dla klasy II gimnazjum wg programu Matematyka z plusem

GEOMETRIA ELEMENTARNA

XII. GEOMETRIA PRZESTRZENNA GRANIASTOSŁUPY

Regionalne Koło Matematyczne

GRAFIKA KOMPUTEROWA. Plan wykładu. 1. Początki grafiki komputerowej. 2. Grafika komputerowa a dziedziny pokrewne. 3. Omówienie programu przedmiotu

Geometria wykreślna. 3. Równoległość. Prostopadłość. Transformacja celowa. dr inż. arch. Anna Wancław. Politechnika Gdańska, Wydział Architektury

Matematyka z plusem dla szkoły ponadgimnazjalnej. ZAŁOŻENIA DO PLANU RALIZACJI MATERIAŁU NAUCZANIA MATEMATYKI W KLASIE III (zakres podstawowy)

IX Olimpiada Matematyczna Gimnazjalistów

KRYTERIA OCEN Z MATEMATYKI DLA UCZNIÓW KL. II GIMNAZJUM

ZAKRES PODSTAWOWY CZĘŚĆ II. Wyrażenia wymierne

RZUTOWANIE PROSTOKĄTNE

Końcoworoczne kryteria oceniania dla klasy II z matematyki Rok szkolny 2015/2016 przygotowała mgr inż. Iwona Śliczner

Geometria. Rodzaje i własności figur geometrycznych:

gdzie (4.20) (4.21) 4.3. Rzut równoległy

Przedmiotowe zasady oceniania i wymagania edukacyjne z matematyki dla klasy drugiej gimnazjum

I semestr WYMAGANIA EDUKACYJNE Z MATEMATYKI KLASA VI. Wymagania na ocenę dopuszczającą. Dział programu: Liczby naturalne

Podstawy działań na wektorach - dodawanie

Grafika inżynierska geometria wykreślna. 4. Wielościany. Budowa. Przekroje.

Oświetlenie. Modelowanie oświetlenia sceny 3D. Algorytmy cieniowania.

Grafika Komputerowa Wykład 5. Potok Renderowania Oświetlenie. mgr inż. Michał Chwesiuk 1/38

KRYTERIA OCEN Z MATEMATYKI DLA UCZNIÓW KL. II GIMNAZJUM

Klasa II POTĘGI. Na ocenę dobrą: umie porównać potęgi sprowadzając do tej samej podstawy

Geometria wykreślna. 5. Obroty i kłady. Rozwinięcie wielościanu. dr inż. arch. Anna Wancław. Politechnika Gdańska, Wydział Architektury

Wymagania edukacyjne z matematyki Klasa II

WYMAGANIA PROGRAMOWE Z MATEMATYKI KLASA II

WYMAGANIA EDUKACYJNE Z MATEMATYKI W KLASIE DRUGIEJ GIMNAZJUM

Obcinanie prymitywów. Mirosław Głowacki Wydział Inżynierii Metali i Informatyki Przemysłowej AGH

Wymagania edukacyjne z matematyki dla klasy II gimnazjum wg programu Matematyka z plusem

Grafika inżynierska geometria wykreślna. 5a. Obroty i kłady. Rozwinięcie wielościanu.

ZESPÓŁ SZKÓŁ W OBRZYCKU

Co to jest wektor? Jest to obiekt posiadający: moduł (długość), kierunek wraz ze zwrotem.

1 wyznacza współrzędne punktów przecięcia prostej danej

MATEMATYKA Z KLUCZEM WYMAGANIA EDUKACYJNE Z MATEMATYKI DLA KLASY ÓSMEJ

PLANIMETRIA CZYLI GEOMETRIA PŁASZCZYZNY CZ. 3

Wymagania z matematyki na poszczególne oceny II klasy gimnazjum

Przedmiotowy system oceniania z matematyki kl.ii

Rok akademicki 2005/2006

Π 1 O Π 3 Π Rzutowanie prostokątne Wiadomości wstępne

W naukach technicznych większość rozpatrywanych wielkości możemy zapisać w jednej z trzech postaci: skalara, wektora oraz tensora.

WYMAGANIA EDUKACYJNE Z MATEMATYKI W KLASIE DRUGIEJ GIMNAZJUM

Matematyka. - dodawanie, odejmowanie, mnożenie i dzielenie pamięciowe

Wymagania na poszczególne oceny w klasie II gimnazjum do programu nauczania MATEMATYKA NA CZASIE

Szczegółowe wymagania edukacyjne z matematyki Klasa II. na ocenę dopuszczającą

I. Potęgi. Logarytmy. Funkcja wykładnicza.

DZIAŁ II: PIERWIASTKI

XI Olimpiada Matematyczna Gimnazjalistów

WYMAGANIA EDUKACYJNE Z MATEMATYKI 2016/2017 (zakres podstawowy) klasa 3abc

Ćwiczenia nr 7. TEMATYKA: Krzywe Bézier a

Rozdział VII. Przekształcenia geometryczne na płaszczyźnie Przekształcenia geometryczne Symetria osiowa Symetria środkowa 328

ROK SZKOLNY 2017/2018 WYMAGANIA EDUKACYJNE NA POSZCZEGÓLNE OCENY:

FIGURY I PRZEKSZTAŁCENIA GEOMETRYCZNE

Wymagania edukacyjne dla klasy drugiej POTĘGI I PIERWIASTKI

WYMAGANIA EDUKACYJN KRYTERIA OCENY Z MATEMATYKI W KLASIE II GIMNAZJUM

WYMAGANIA EDUKACYJNE Z MATEMATYKI DLA KLASY 7SP. V. Obliczenia procentowe. Uczeń: 1) przedstawia część wielkości jako procent tej wielkości;

Przedmiotowe Zasady Oceniania

Ćwiczenia z Geometrii I, czerwiec 2006 r.

Matematyka z plusem Wymagania programowe na poszczególne oceny dla klasy II. Szczegółowe kryteria oceniania po pierwszym półroczu klasy I:

Wymagania edukacyjne z matematyki w klasie II gimnazjum w roku szkolnym 2016/2017 opracowane na podstawie programu Matematyka z plusem GWO

Wymagania na poszczególne oceny szkolne z. matematyki. dla uczniów klasy IIIa i IIIb. Gimnazjum im. Jana Pawła II w Mętowie. w roku szkolnym 2015/2016

Elementy geometrii analitycznej w R 3

Kształcenie w zakresie rozszerzonym. Klasa IV

Rozwiązywanie równań różniczkowych cząstkowych metodą elementów skończonych - wprowadzenie

Katalog wymagań programowych na poszczególne stopnie szkolne. Matematyka. Poznać, zrozumieć

Matura próbna 2014 z matematyki-poziom podstawowy

MATEMATYKA Z PLUSEM DLA KLASY VII W KONTEKŚCIE WYMAGAŃ PODSTAWY PROGRAMOWEJ. programowej dla klas IV-VI. programowej dla klas IV-VI.

Transkrypt:

Grafika komputerowa Wykład 9 Algorytmy wyznaczania obiektów zasłonietych Instytut Informatyki i Automatyki Państwowa Wyższa Szkoła Informatyki i Przedsiębiorczości w Łomży 2 0 0 9

Spis treści Spis treści 1 Wstęp 2 Wyznaczanie zasłoniętych fragmentów linii obiektów wielościennych Algorytm Ricciego Algorytm Appela Algorytm z buforem głębokości

Spis treści Spis treści 1 Wstęp 2 Wyznaczanie zasłoniętych fragmentów linii obiektów wielościennych Algorytm Ricciego Algorytm Appela Algorytm z buforem głębokości

Wstęp Wyznaczanie zasłoniętych fragmentów linii obiektów wielościennych Wstęp Metody wyznaczania zasłoniętych linii i powierzchni w istotny sposób zależą od urządzeń graficznych, na których tworzymy obraz. W przypadku monitorów ekranowych można malować jedno na drugim, wymazywać wcześniej narysowane elementy itp. Sprowadza się to do zmiany zawartości bufora ekranu. Natomiast większość urządzeń rysujących nie umożliwia stosowania takich technik. Rysunek 1 na monitorze otrzymuje się bardzo łatwo malujemy w kolejności odwrotnej niż przy tworzeniu obrazów na szkle: najpierw koło, potem częściowo przykrywający je kwadrat i na nich trójkąt. Uzyskanie tego samego rysunku na ploterze jest już bardziej skomplikowane; wymaga bowiem wyznaczenia odpowiednich fragmentów koła i kwadratu.

Wstęp Wyznaczanie zasłoniętych fragmentów linii obiektów wielościennych Wstęp Rys. 1: Przykład rysunku, który znacznie trudniej jest wykonać na ploterze niż wyświetlić na ekranie

Wstęp Wyznaczanie zasłoniętych fragmentów linii obiektów wielościennych Wstęp Rys. 2: Rysunek tego samego obiektu: a) ze wszystkimi liniami; b) z usuniętymi fragmentami zasłoniętymi

Wstęp Wyznaczanie zasłoniętych fragmentów linii obiektów wielościennych Wstęp Podział metod na dyskretne (pikselowe) i analityczne dobrze ilustrują dwie różne metody wizualizacji powierzchni, jakie za chwilę omówimy. Pierwsza wykorzystuje algorytm Bresenhama rysowania odcinków i wyznacza zbiory pikseli odpowiadające widocznym fragmentom linii, a w drugiej nie zasłonięte obszary są określane analitycznie, co wymaga rozwiązywania układów równań nieliniowych. Inna klasyfikacja omawianych dziś algorytmów jest związana z przestrzenią, w której działają. Potrzebne obliczenia i porównania między elementami geometrycznymi rysowanej sceny mogą być wykonywane w trójwymiarowej przestrzeni obiektu; takie metody są nazywane metodami przestrzeni danych. Odróżnia się je od algorytmów przestrzeni obrazu, w których są badane dwuwymiarowe rzuty elementów obiektu na płaszczyznę rysunku i dopiero gdy rzuty maja części wspólne, rozstrzyga się zasłanianie w trójwymiarowej przestrzeni danych.

Wstęp Wyznaczanie zasłoniętych fragmentów linii obiektów wielościennych Wstęp Algorytmy przestrzeni danych najczęściej dają dokładne wyniki analityczne i są na ogół kosztowniejsze. Metody przestrzeni obrazu stosuje się głównie na monitorach rastrowych; niektóre z tych metod na przykład algorytm Watkinsa przeglądania obrazu liniami poziomymi naśladują pracę takiego urządzenia, a większość uwzględnia jego rozdzielczość. Różne są charakterystyki kosztu obu grup metod. Liczba działań wykonywanych w algorytmach przestrzeni danych zależy głównie od złożoności rysowanej sceny, na przykład od liczby krawędzi obiektów wielościennych, a w metodach przestrzeni obrazu jest raczej funkcją liczby pikseli monitora.

Wstęp Wyznaczanie zasłoniętych fragmentów linii obiektów wielościennych Zadanie wyznaczania widocznych fragmentów obiektu trójwymiarowego można traktować jako zadanie sortowania. Elementy leżące dalej od obserwatora (głębiej w kierunku patrzenia) są ewentualnie zasłaniane przez lezące bliżej. Trzeba pamiętać, że relacja częściowego zasłaniania nie jest przechodnia: z faktu, że A zasłania fragment B, a B zasłania część C, wcale nie musi wynikać, że A zasłania fragment C (rys. 3a); czasami jest odwrotnie: A zasłania część B, dalej B zasłania fragment C, a C zasłania część A (rys. 3b); relacja częściowego zasłaniania nie jest relacją antysymetryczną: A może częściowo zasłaniać B, a jednocześnie B zasłaniać fragment A (rys. 3c).

Wstęp Wyznaczanie zasłoniętych fragmentów linii obiektów wielościennych Wstęp Rys. 3: a) Częściowe zasłanianie nie jest relacją przechodnią; b) zakleszczenie wzajemnych zasłonięć; c) wzajemne zasłanianie się dwóch ścian

Wyznaczanie zasłoniętych fragmentów linii obiektów wielościennych Obiekty wielościenne Przypomnijmy, że obiekty wielościenne opisuje się na ogół listą wierzchołków (tablicą zawierającą ich współrzędne), listą par numerów wierzchołków określających krawędzie i wreszcie listą numerów krawędzi definiujących ściany. Rozważmy najpierw przypadek rysowania sceny trójwymiarowej, składającej się z dowolnego, ale tylko jednego wielościanu wypukłego. Możemy pominąć ściany równoległe do kierunku patrzenia; ich rzuty na płaszczyznę rysunku redukują się do odcinków. Każda z pozostałych ścian jest całkowicie widoczna albo cała zasłonięta. Możemy zakładać, że krawędzie ściany są uporządkowane odwrotnie do kierunku ruchu wskazówek zegara. Wtedy iloczyn wektorowy dowolnych dwóch kolejnych krawędzi wyznacza wektor normalny n, prostopadły do ściany i skierowany przeciwnie do kierunku patrzenia, czyli na zewnątrz wielościanu (rys. 4).

Obiekty wielościenne Rys. 4: Określanie widoczności ściany bryły wypukłej

n k = n k cos (n, k) k wektor określający kierunek patrzenia: przy rzucie równoległym k jest stały; przy rzucie środkowym za k można przyjąć wektor o początku w punkcie położenia obserwatora (czyli w środku rzutowania) i końcu w dowolnym punkcie danej ściany. jeśli n k > 0, to kąt między n i k jest mniejszy niż 90, co oznacza, ze cała ściana jest zasłonięta, tj. skierowana tyłem do kierunku patrzenia (rys. 5a) jeśli n k < 0, to cała ściana jest widoczna (rys. 5b).

Obiekty wielościenne Rys. 5: Skierowanie ścian: a) tyłem; b) frontem do kierunku patrzenia

Spis treści 1 Wstęp 2 Wyznaczanie zasłoniętych fragmentów linii obiektów wielościennych Algorytm Ricciego Algorytm Appela Algorytm z buforem głębokości

Algorytm Ricciego Założenia Dowolny trójwymiarowy obiekt (scena) zależnie od sposobu rzutowania mieści się w odpowiednim prostopadłościanie lub ostrosłupie widzenia; scena jest zbudowana z płaskich wielokątów wypukłych ograniczonych krawędziami i ewentualnie z dodatkowych odcinków nie będących krawędziami ścian; żadna z krawędzi ani żaden odcinek nie przenikają żadnej ściany. Algorytm Ricciego sprowadza się do porównywania rzutu każdej krawędzi i każdego odcinka z rzutami wszystkich ścian i wyznaczania widocznych fragmentów badane1 krawędzi (odcinka). Założenie, że ściany są wielokątami wypukłymi, pozwala na istotne zmniejszenie kosztu obliczenia części wspólnej rzutu odcinka i ściany.

Algorytm Ricciego Oznaczenia P i (x i, y i, z i ), i = 1, 2,..., lp wierzchołki ścian albo końce odcinków tworzących rysowaną scenę (xp i, yp i ) współrzędne rzutów P punktów P na płaszczyznę rysunku k j, j = 1, 2,..., lk krawędzie o l, l = 1, 2,..., lo odcinki TO tablica par krańcowych punktów krawędzi i odcinków; jeśli jakaś krawędź jest wspólna dla kilku ścian, to w TO występuje tylko raz. LKS tablica liczby krawędzi ścian; LKS(m) liczba krawędzi ściany m APK(m) adres pierwszej krawędzi ściany m TK tablica krawędzi

Algorytm Ricciego Oznaczenia Np., m-ta ściana jest ograniczona krawędziami o numerach TK(APK(m)),..., TK(APK(m) + LKS(m) 1) Zakładamy, że krawędzie ściany są uporządkowane odwrotnie do kierunku ruchu wskazówek zegara. Jeśli pewne ściany tworzą brzeg zamkniętej bryły, a więc mogą być widoczne tylko z jednej strony, to definiujemy je tylko raz, od tej zewnętrznej strony. Pozostałe ściany muszą być określone dwukrotnie; trzeba przy tym pamiętać o odwrotnym uporządkowaniu krawędzi dla różnych stron tej samej ściany.

Algorytm Ricciego wyznaczania widocznych fragmentów linii obiektów wielościennych I dla każdej ściany (m = 1, 2,..., ls) sprawdzamy, czy nie jest odwrócona tyłem ; jeśli tak, to zmieniamy liczbę krawędzi tej ściany na ujemną, LKS(m) = LKS(m); dla wszystkich krawędzi k j (j = 1, 2,..., lk) i wszystkich odcinków o l (l = 1, 2,..., lo) jeśli badany odcinek leży na ścianie odwróconej tyłem, (czyli gdy LKS(NS(l)) < 0), to go pomijamy; w tablicy TO znajdujemy numery np początkowego i nk końcowego punktu krawędzi (odcinka); inicjujemy listę widocznych fragmentów rzutu, r = P np P nk, przyjmując lwf = 1 oraz tp(1) = 0 i tk(1) = 1 zakładamy, że odcinek P np + t(p nk P np ), (t [0, 1]) jest cały widoczny;

Algorytm Ricciego... II dla wszystkich ścian S m, m = 1, 2,..., ls jeśli LKS(m) < 0 lub k j jest krawędzią S m lub o l leży na ścianie S m to daną ścianę pomijamy w przeciwnym razie wyznaczamy fragment r leżący wewnątrz rzutu ściany S m; jeśli ten fragment jest pusty, to przechodzimy do badania zasłaniania danej krawędzi (odcinka) następną ścianą w przeciwnym razie niech P np + t min(p nk P np ) i P np + tmax (P nk P np ), gdzie 0 t min t max 1 są końcami fragmentu r leżącego wewnątrz rzutu S m; w celu rozstrzygnięcia, czy ten fragment jest widoczny, czy zasłonięty ścianą S m, znajdujemy jego środek, gdzie P sr = (xsr, ysr ) = P np + tsr (P nk P np ) i t sr = (t min + t max )/2, a następnie punkty w przestrzeni 3D: K leżący na badanej krawędzi (odcinku) i S leżący na ścianie S m, takie, że P sr jest ich wspólnym rzutem na płaszczyznę rysunku;

Algorytm Ricciego... III jeśli punkt K leży głębiej w kierunku patrzenia niż S, lub jeśli K leży po przeciwnej stronie ściany niż obserwator (środek rzutowania przy rzucie perspektywicznym), to wyznaczony fragment r jest zasłonięty ścianą S m i wtedy od sumy przedziałów odejmujemy przedział [t min, t max ]; [tp 1, tk 1 ] [tp 2, tk 2 ]... [tp lwf, tk lwf ] jeśli wynik jest zbiorem pustym, to kładziemy lwf = 0 i przerywamy badanie danej krawędzi (odcinka), gdyż cała krawędź jest zasłonięta; w przeciwnym razie odpowiednio modyfikujemy wartość lwf, a przedziały otrzymane w wyniku odejmowania numerujemy tak (patrz rys. 6), by tp 1 < tk 1 < tp 2 < tk 2 < < tp lwf < tk lwf wynik: widoczne jest lwf fragmentów krawędzi (odcinka) P np + t(p nk P np) dla t [tp i, tk i ], i = 1, 2,..., lwf

Algorytm Ricciego... Rys. 6: Numeracja fragmentów krawędzi w algorytmie Ricciego

Spis treści 1 Wstęp 2 Wyznaczanie zasłoniętych fragmentów linii obiektów wielościennych Algorytm Ricciego Algorytm Appela Algorytm z buforem głębokości

Algorytm Appela Appel w swym algorytmie wykorzystał fakt, że liczba ścian zasłaniających punkty badanego odcinka zmienia się tylko w punktach przecięcia z rzutami szczególnych krawędzi. Algorytm ten doczekał się wielu modyfikacji i ulepszeń, ale ze względu na czytelność idei warto przedstawić pierwowzór. W stosunku do założeń z poprzedniego punktu wprowadzamy dwie zmiany: ściany mogą być dowolnymi wielokątami, niekoniecznie wypukłymi nie dopuszczamy odcinków leżących na ścianach i nie będących ich krawędziami Oznaczenie: lz(p) liczba ścian (pomijając odwrócone tyłem), które zasłaniają punkt P.

Algorytm Appela I znajdujemy ściany odwrócone tyłem, pozostałe traktujemy jako potencjalnie widoczne; pomijamy krawędzie ograniczające tylko ściany odwrócone tyłem, resztę nazywamy istotnymi i wyróżniamy wśród nich krawędzie konturowe ograniczające jednocześnie ściany potencjalnie widoczne i odwrócone tyłem; dla rzutów P i P j wszystkich istotnych krawędzi obliczamy początkową wartość lz = lz(p i ); wyznaczamy punkty Q k = Q k (t k) przecięcia odcinka P i + t(p j P i ), t (0, 1) ze wszystkimi krawędziami konturowymi i porządkujemy je tak, by t 1 < t 2 < < t l

Algorytm Appela II dla k = 1, 2,... l niech QK k i QP k będą punktami odpowiednio krawędzi konturowej i odcinka P i P j, których wspólnym rzutem jest Q k ; wartość lz ulega zmianie w punkcie Q k, jeśli QK p leży bliżej obserwatora (bliżej w kierunku patrzenia); dla rzutu środkowego taką sytuację ilustruje rys. 8; dokładniej, dla P leżących za Q k jest lz = lz + 1, jeśli krawędź P ip j wchodzi za ścianę, a w przeciwnym przypadku, tzn. kiedy P i P j wychodzi zza ściany, jest lz = lz 1.

Algorytm Appela Rys. 7: Zasłanianie fragmentów krawędzi w algorytmie Appela

Algorytm Appela Rys. 8: Zmiana liczby ścian zasłaniających

Spis treści 1 Wstęp 2 Wyznaczanie zasłoniętych fragmentów linii obiektów wielościennych Algorytm Ricciego Algorytm Appela Algorytm z buforem głębokości

Algorytm z buforem głębokości Algorytm z buforem głębokości jest jednym z najłatwiejszych do implementacji, a przy tym można go stosować do szerokiej klasy obiektów. Służy do wyznaczania widocznych fragmentów ścian i ich wizualizacji na urządzeniu rastrowym: kolorowa drukarka, obraz na ekranie,... Będziemy wypełniali bufor, np. ekranu, znajdując dla każdego piksela ścianę leżącą najbliżej przed nim w kierunku patrzenia i przypisując pikselowi kolor/jasność odpowiedniego fragmentu tej ściany (rys. 9). Ściany rysowanego obiektu mogą być dowolnymi (niekoniecznie wypukłymi) wielokątami; mogą też mieć dziury i wzajemnie się przenikać. Zakładamy, że dana jest funkcja kolor(s, x, y, z) przypisująca każdemu punktowi o współrzędnych (x, y, z) leżącemu na ścianie S kolor/jasność. W przykładowym rys. 10 różne kolory odpowiadają kolejnym poziomym warstwom w przestrzeni R 3.

Algorytm z buforem głębokości Rys. 9: Idea algorytmu z buforem głębokości

Algorytm z buforem głębokości Rys. 10: Nie zasłonięte fragmenty powierzchni B-sklejanej wyznaczone algorytmem z buforem głębokości

Algorytm z buforem głębokości Inicjujemy bufor buf ekranu i tablicę tab głębokości, podstawiając dla wszystkich pikseli (i, j) ekranu but(i, j) = tlo; tab(i, j) = rmax; wartość tlo określa kolor tła obrazu, a rmax jest największą liczbą rzeczywistą w stosowanej arytmetyce; dla wszystkich ścian S m, rysowanej sceny dla wszystkich pikseli (i, j) zawartych w rzucie S m obliczamy współrzędne rzeczywiste (x, y) odpowiadające pikselowi (i, j); obliczamy współrzędną z przeciwobrazu (x, y) leżącego na ścianie S m ; jeśli z < tab(i, j), to {tab(i, j) = z; buf (i, j) = kolor(s m, x, y, z)}

Spis treści 1 Wstęp 2 Wyznaczanie zasłoniętych fragmentów linii obiektów wielościennych Algorytm Ricciego Algorytm Appela Algorytm z buforem głębokości

Algorytm przeglądania liniami poziomymi Watkinsa Zakładamy, ze ściany nie przenikają się i każda jest jednokolorowa (to dla uproszczenia opisu). Podkreślmy natomiast, że wielokąty mogą być dowolne nie ograniczamy się do wypukłych. Przez krawędzie rozumiemy dalej rzuty krawędzi ścian na płaszczyznę rysunku. Początkowo bufor ekranu wypełniamy kolorem tła. Rzut rysowanej sceny przeglądamy liniami poziomymi od dołu do góry l z lewa na prawo. Tak samo jak przy wypełnianiu wielokąta, tworzymy tablicę krawędzi aktywnych TKA, zawierającą informacje tylko o tych krawędziach, które przecina dana linia pozioma y.

Algorytm z buforem głębokości Rys. 11: Przeglądanie rzutów ścian liniami poziomymi

Literatura [1] M. Jankowski, Elementy grafiki komputerowej, WNT, 2006

Koniec? :-( Koniec wykładu 9