Fuastman LAB1[1] id 181241 Nieznany

background image

WOJSKOWA AKADEMIA TECHNICZNA

LABORATORIUM GRAFIKA KOMPUTEROWA

SPRAWOZDANIE:

Laboratorium 1 – modelowanie obiektów za pomocą trybu

GL_QUAD_STRIP


PROWADZADZĄCY:

dr inż. Marek Salamon

WYKONAŁ:

Mateusz Faustman I7X1N1

DATA:

06.02.2009












background image











1.

Cel ćwiczenia – Celem ćwiczenia było zapoznanie się z generatorem adresu
odczytu wykorzystywanym przy wyświetlaniu grafiki w środowisku OpenGL oraz
wykonanie 3 zadań wymagających modyfikacji sposobu w jaki odczytywane są
kolejne piksele obrazu w celu otrzymania konkretnych efektów.


2. Treść zadania – W trakcie ćwiczeń do wykonania były 3 zadania:

a.

Napisać algorytm sterujący generatorem adresu odczytu w celu uzyskania
efektu przesuwania poziomego obrazu w kierunku prawej i lewej strony.

b.

Napisać algorytm sterujący generatorem adresu odczytu w celu uzyskania
efektu przewijania poziomego obrazu w kierunku lewej krawędzi ekranu.

c.

Napisać algorytm sterujący generatorem adresu odczytu w celu uzyskania
efektu zasłaniania pionowego w kierunku dolnej krawędzi.

d.

3. Przebieg ćwiczenia:

We wszystkich wykonywanych zadaniach kluczową rzeczą było użycie funkcji
ReadPixel(int x, int y) (która powodowała wyświetlenie na urządzeniu
zobrazowania pojedynczego piksela obrazu o podanych w parametrach funkcji
współrzędnych x oraz y) oraz funkcji ReadTlo(N) (która pozwala na
„zasłanianie” obrazu pixelami określonego koloru. Również ważne było
poprawne wykorzystywanie zwiększanego cyklicznie parametru p (w zakresie
0-256) co pozwalało wygodnie adresować kolejne piksele obrazu (obraz ma
wymiary 256x256).
Każda wykorzystana funkcja jest typu void – nie zwraca ani nie przyjmuje
żadnych parametrów. Wszystkie wyniki są wyświetlane na standardowym
wyjściu w trakcie działania funkcji.

background image

Zadanie 1

Zadanie polegało na podzieleniu obrazu na 2 równe części wzdłuż osi Y i
stopniowe zasłanianie obrazu od środka do skrajnych krawędzi obrazu.
Zasłanianie polegało na dodawaniu 1 czarnego pixela przy każdej iteracji pętli
głównej i jednoczesnym przesuwaniu obu części obrazu również o 1 pixel.



Kod źródłowy algorytmu:

public

void

Efekt3()

{

if

(p >= L) p = 0;

Gdy p przekroczy 256 jest zerowane

Ż

eby nie wyj

ść

poza obraz.

for

(

int

j = 1; j <= L; j++)

Wszystkie pionowe linie sa przetwarzane razem

{

for

(

int

i = 1 + p; i <= K / 2;

i++)

Dzieli obraz na 2 cz

ęś

ci i pobiera (1+nr iteracji ) pixeli

obrazu

ReadPixel(i, j);

for

(

int

i = 1; i <= p; i++)

Przetwarza zasłanianie prawej cz

ęś

ci obrazu

ReadTlo(N);

for

(

int

i = K/2+1; i <= K/2+p;

i++)

Przetwarza zasłanianie lewej cz

ęś

ci obrazu

ReadTlo(N);

for

(

int

i = K / 2 + 1; i <= K

- p; i++)

Zaczyna rysowanie od połowy ekranu

ReadPixel(i, j);

i rysuje K/2-p pixeli obrazu

}

background image

Zadanie 2

Zadanie polegało na przesuwaniu obraz w lewą stronę czyli rysowaniu w
każdej kolejnej iteracji na miejsc u pixela (x,y) pixela(x+1,y).

Kod źródłowy algorytmu:

public

void

Efekt2()

{

if

(p >= L) p = 0;

warunek dzięki któremu pętla nie zakończy się po

dojściu do wartości 256 (koniec obrazka)

for

(

int

j = 1; j <= L; j++)

{

for

(

int

i = 1 + p; i <= K; i++)

Rysowane jest K-p pixeli na początku 256

ReadPixel(i, j);

a na końcu 0

for

(

int

i = 1; i <= p; i++)

Rysowana jest p pixeli czyli w każdej iteracji

ReadPixel(i, j);

Rysowanych jest K-p+p=K=256 pixeli

}

}

background image

Zadanie 3

Zadanie polega na zasłanianiu obrazu 1 linią poziomą w każdej kolejnej
iteracji.

Kod źródłowy algorytmu:

public

void

Ef

ekt1()

{

if

(p >= L) p = 0;

for

(

int

j = 1; j <= p; j++)

Najpierw rysowanych jest 0 linii czarnych

{

w każdej kolejnej iteracji rysowana jest 1 więcej

for

(

int

i = 1; i <= K; i++)

ReadTlo(N);

}

for

(

int

j = 1; j <= L - p; j++)

W pierwszej iteracji rysowanych jest 256 linii

{

obrazka, w każdej kolejnej 1 mniej

for

(

int

i = 1; i <= K; i++)

ReadPixel(i, j+p);

j+p oznacza że pobierana jest p-ta kolumna dzięki

}

czemu obraz nie przesuwa się w kolejnych iteracjach

}




4. Wnioski:

Podczas zajęć wykonywaliśmy zadania które umożliwiły nam poznanie jednej z
metody wpływania na sposób wyświetlania obrazu na ekranie, odpowiednio
manipulując adresami kolejno wyświetlanych pikseli mogliśmy wywołać pożądane
efekty.



Wyszukiwarka

Podobne podstrony:
dsp lab1 id 144058 Nieznany
AKiSO lab1 id 53765 Nieznany
LAB1 4 id 258893 Nieznany
Protokol Ptel Lab1 id 402766 Nieznany
lab1 9 id 258905 Nieznany
BHP i lab1 id 84431 Nieznany (2)
lab1 2 id 258938 Nieznany
Lab1 2 id 258868 Nieznany
Lab1 1 id 258867 Nieznany
Lab1(1) 3 id 258982 Nieznany
3dsmax lab1 id 36712 Nieznany (2)
lrm sprawozdanie kck lab1 id 27 Nieznany
kap lab1 id 231163 Nieznany
JPPO Lab1 id 228820 Nieznany
Protokol Siko Lab1 id 402770 Nieznany
dsp lab1 id 144058 Nieznany
AKiSO lab1 id 53765 Nieznany
LAB1 4 id 258893 Nieznany
lab1 12 id 258878 Nieznany

więcej podobnych podstron