Modul 2 Reprezentacje elementow sceny graficznej i ich przeksztalcenia, Transport sudia, Grafika komputerowa
[ Pobierz całość w formacie PDF ]
Reprezentacje elementów sceny graficznej
i ich przekształcenia
1. Podstawowe algorytmy grafikikomputerowej
1.1. Współrzędne okna widokowego i współrzędne ekranu
1.2. Algorytmy rysowania odcinka
1.3. Algorytmy rysowania okręgu
1.4. Algorytmy rysowania znaków alfanumerycznych
1.5. Algorytm wypełniania obszarów zamkniętych
1.6. Algorytm antyaliasingu
2. Reprezentacje elementów sceny graficznej
3. Przekształcenia obiektów w graficewektorowej
4. Współrzędne i reprezentacje jednorodne
5. Przekształcenia obiektów w graficerastrowej.Filtrygraficznei ichzastosowanie
Bibliografia
1. Podstawowe algorytmy
grafikikomputerowej
W przypadku aplikacji graficznychrealizowanychkomputerowowizualizacjawyników
ich działania najczęściej odbywa się w trybie rastrowym (w takim trybie pracuje więk-
szość wyświetlaczy i wszystkie drukarki). System graficznymusiwięc zapewnić przetwo-
rzenie danych obrazowych zapisanych w modelu zastosowań na tryb rastrowy.
Nie jest to kłopotliwe w przypadku danych zapisanych w trybie rastrowym (trzeba
tylko przeskalować tablice pikseli zapisane w modelu zastosowań w tablice pikseli
okna widokowego lub obszaru drukowanego).
Problemy pojawiają się w przypadku zapisu danych w trybie wektorowym. W takiej
sytuacji przetwarzanie danych między trybami odbywa się z wykorzystaniem algo-
rytmów zapisanych w systemie graficznym.
Podobna sytuacja występuje także w trakcie programowania modułów graficznych
w aplikacjach pisanych w językach wyższego rzędu. Wykonawca aplikacji staje wo-
bec konieczności przetworzenia danych zapisanych analitycznie (najczęściej w posta-
ci wzorów, czyli analogowo, i w trybie wektorowym) do postaci spójnych zbiorów
pikseli (zapis dyskretny w trybie rastrowym).
Algorytmy przetwarzania danych z trybu wektorowego do rastrowego zostały
zastosowane praktycznie w momencie wprowadzenia wyświetlaczy działających
w trybie rastrowym (lata 70. XX w.), choć znane były już wcześniej. Dla tamtego
okresu znamienna była praca w trybie znakowym (odpowiednik dzisiejszego trybu
tekstowego).
Pozostałością tej formy są tablice znakowe i tablice
ASCII
(ang.
American Standard
Code for Information Interchange
). Znaki tablicy ASCII są 7-bitowym kodem przypo-
rządkowującym liczby z zakresu 0–127 literom (alfabetu angielskiego), cyfrom, zna-
kom przestankowym i innym symbolom oraz poleceniom sterującym. Przykładowo
litera „a” jest kodowana liczbą 97, a polecenie „powrót karetki” — liczbą 13. Litery,
cyfry oraz inne znaki drukowalne tworzą zbiór znaków ASCII. Jest to 95 znaków
o kodach 32–126. Pozostałe 33 kody (0–31 i 127) to tzw. kody sterujące, służące
do sterowania urządzeniem odbierającym komunikat, np. drukarką czy innym ter-
minalem. Znaki ASCII są także wskaźnikami do zbiorów pikseli reprezentujących
znaki alfanumeryczne, zapamiętywanych w pamięci stałej komputera lub systemu
graficznego (karty graficznej).
Wraz z pojawieniem się rozbudowanych sterowników dla trybu rastrowego (zwane-
go wówczas trybem graficznym) wyświetlania danych, proponowanych przez IBM
dla otwartej architektury komputerów (CGA —
Color Graphics Adapter
, EGA —
En-
hanced Graphics Adapter
, VGA —
Video Graphics Array
itd.), programiści rozpoczęli
intensywny proces przystosowywania algorytmów przetwarzających dane obrazowe
zapisane w sposób analityczny na tryb rastrowy. Proces ten trwa po dzień dzisiejszy.
Zbiory takich algorytmów dołączane są do bibliotek każdego poważniejszego środo-
wiska programowania. Można je także odnaleźć w wielu wortalach dedykowanych
2
Z całej gamy algorytmów służących dawniej (w latach 70. i 80. XX w.) do pracy
w trybie graficznymwybranokilkapodstawowych,które umożliwiają jak najdokład-
niejsze przetworzenie zapisu trybu wektorowego na tryb rastrowy, i umieszczono je
jako integralną część systemu graficznego. Są to:
— algorytm rysowania punktu,
— algorytm rysowania odcinka,
— algorytm rysowania wycinka okręgu,
— algorytm rysowania znaków alfanumerycznych zapisanych w formatach wektoro-
wych lub postscriptowych,
— algorytm wypełniania obszarów zamkniętych,
— algorytmy antyaliasingu.
1.1. Współrzędne okna widokowego i współrzędne ekranu
W przypadku rysowania pojedynczego punktu algorytm sprowadza się do przeli-
czenia współrzędnych punktu w oknie widokowym na współrzędne ekranowe oraz
zapalenia piksela o określonych współrzędnych ekranowych. Transformacja współ-
rzędnych okna widokowego do współrzędnych ekranowych zawiera moduł prze-
kształcenia współrzędnych okna do współrzędnych ekranowych oraz moduł dyskre-
tyzacji tych ostatnich. Związane jest to przede wszystkim z faktem, że współrzędne
(okna widokowego i pierwotnie uzyskane z transformacji współrzędne ekranowe)
najczęściej są liczbami rzeczywistymi.
Oczywiście okno widokowe (definiowane w programie użytkowym) w trakcie ren-
deringu jest przekształcane w widoczną na płaskim ekranie figurę (najczęściej jest to
prostokąt).
Moduł przekształcenia współrzędnych okna widokowego (
x
o
;
y
o
) do współrzędnych
okna ekranowego (
x
e
;
y
e
) jest związany z faktem specyficznego kierunku osi rzęd-
nych ekranu
Y
(jest ona skierowana w dół ekranu) oraz możliwości niezależnej defi-
nicji układu odniesienia w przypadku okna widokowego (rys. 1).
Rysunek 1
Przekształcenie współrzędnych
okna widokowego
we współrzędne ekranowe
Moduł dyskretyzacji współrzędnych (nie jest ważne jakich) jest oparty na funkcjach
zaokrąglania (round) lub obcięcia części ułamkowej liczby (integer).
3
Przykład
Niech
m
będzie dyskretyzowaną liczbą rzeczywistą. W takim przypadku odpowied-
nie przekształcenia zastosowane do tej liczby dają następujące rezultaty:
m
= 2,174 ⇒ round(
m
) = 2 oraz integer(
m
) = 2,
m
= 3,5 ⇒ round (
m
) = 4 oraz integer(
m
) = 3,
m
= 0,825 ⇒ round (
m
) = 1 oraz integer(
m
) = 0.
1.2. Algorytmy rysowania odcinka
Podstawowy algorytm rysowania odcinka na rastrowym, dwuwymiarowym ekranie
(zwany
algorytmem przyrostowym
) jest oparty na równaniu odcinka o określonym
początku — punkcie o współrzędnych (
x
0
;
y
0
) oraz końcu — punkcie o współrzęd-
nych (
x
k
;
y
k
).
Równanie tak zdefiniowanego odcinka we współrzędnych (należących do liczb rze-
czywistych) okna widokowego ma następującą postać:
y y
y x y x x
x x
k
0
,
0
0
k
0
dla
x
k
≠
x
0
.
Reprezentacją graficzną takiego równania jest odcinek przedstawiony na rysunku 2.
Rysunek 2
Reprezentacja graficzna
równania odcinka
Dla rozpatrywanego odcinka przyjęto
:
X
0
oraz
X
k
(14; 6). Równanie odcin-
5
3
1 4
7
7
.
Na układ współrzędnych okna widokowego można nałożyć układ pikseli okna wi-
dokowego, co przedstawiono na rysunku 3. Dla lepszej wizualizacji przyjęto, że roz-
miar boku piksela jest równy 1 jednostce.
4
5
4;1
7
ka ma postać:
y x x
Rysunek 3
Reprezentacja graficzna
równania odcinka z nałożonym
układem pikseli okna
widokowego (na osiach podano
kolejne numery pikseli
w tym układzie)
Algorytm przekształcania rysunku wektorowego we współrzędnych rzeczywistych
okna widokowego na obraz rastrowy w układzie pikseli okna widokowego pole-
ga na: dyskretyzacji zmiennych rzeczywistych, obliczeniu wartości zmiennej
y
i
dla
wartości dyskretyzowanych
x
i
i zapamiętaniu współrzędnych (liczb całkowitych) od-
powiednich pikseli. W wyniku tej operacji otrzymujemy w oknie widokowym i na
ekranie wyświetlacza (po przeliczeniu współrzędnych) obraz przedstawiony na ry-
sunku 4.
Rysunek 4
Obraz odcinka z rysunku 3
w rastrowym oknie widokowym
(i jednocześnie na ekranie
wyświetlacza pracującego
w trybie rastrowym)
Wykonajmy wszystkie obliczenia dla odcinka, którego równanie zostało podane
w podpisie rysunku 3.
a
=
y
k
y
0
3
x
0
= 4;
y
0
= 1 ;
x
k
= 14;
y
k
= 6;
x
x
7
k
0
x
0
= 4;
0
y
5
1 2
7
x
1
= 5;
y
1
1
2 2
7
x
2
= 6;
y
2
x
3
= 7;
y
3
round
3
3
x
4
= 8;
y
4
3
3 3
7
x
5
= 9;
y
6
4
5
7
5
round
round
round
4
2 3
7
round
round
[ Pobierz całość w formacie PDF ]