gk sprawozdanie lab1

background image

Michał Polkowski
gr. I8Y3S1

Data wykonania ćwiczenia:

2.12.2009r.

WOJSKOWA AKADEMIA TECHNICZNA

Laboratorium Grafiki komputerowej

SPRAWOZDANIE

z ćwiczenia laboratoryjnego nr 1.

Prowadzący:

mgr inż. Wojciech Sulej

background image

Do dyspozycji mamy program, który realizuje pewne funkcje związane z

przekształcaniem obrazu wczytanego z pliku. Zadaniem jest przekształcenie poszczególnych

procedur tak, aby realizowały funkcje zadane przez prowadzącego.

Piksele wczytywane są do komórek pamięci obrazu kolejno wierszami począwszy od

lewego górnego rogu. Po tych komórkach przebiega raster wczytujący (wyświetlający) piksel

korzystając z następujących funkcji:

ReadPixel(i, j) – wczytanie do komorki wyświetlanego obrazu – piksela obrazu

wczytanego z pliku o współrzędnych (i, j);

ReadTlo(N) – wczytanie do komórki wyświetlanego obrazu – piksela o kolorze

określonym przez stałą N (tutaj – czerń);

Wykorzystywana jest także zmienna p, oznaczająca aktualną klatkę w animacji efektów.

Zadanie 1.

Napisac algorytm sterujacy generatorem adresu odczytu w celu uzyskania efektu zaslaniania

poziomego obrazu w kierunku lewej strony obrazu.

Przekształcona przeze mnie funkcja wygląda następująco:


public void Efekt1()
{
//efekt: zasłanianie

if (p >= K) p = 0;

for (int j = 1; j <= L; j++)

{

//wczytuje obraz do czarnego paska

for (int i = 1; i <= K - p; i++)

ReadPixel(i, j);

//wczytuje pasek czarnego tla

for (int i = 1; i <= p; i++)

ReadTlo(N);

}

}

Warunek if(p >= K) p = 0; sprawdza czy przekształceniu uległ już cały obraz. Obraz ma

rozmiar 256x256 pikseli, dlatego maksymalna ilosc klatek dla jednego pełnego

przekształcenia wynosi właśnie 256. Gdy wartosc p przekroczy ta granice przypisujemy jej

wartosc 0, czyli proces przekształcania obrazu wykonuje się od początku, zatacza pętlę.

Pierwsza pętla for przechodzi przez kolejne kolumny obrazu, kolejne pętle –

zagnieżdźone – wczytują odpowiednio piksele obrazu do pewnego momentu, a następnie

piksele tła (czerń). W ten sposób obraz jest „zasłaniany” w każdej kolejnej klatce od prawej

strony w lewym kierunku.

background image

Efekt działania programu (dwie wybrane klatki):

Zadanie 2.

Napisac algorytm sterujacy generatorem odczytu w celu uzyskania efektu przewijania

pionowego w kierunku gornej krawedzi ekranu.

Przekształcona przeze mnie funkcja wygląda następująco:

public void Efekt2()
{

//efekt: przewijanie si

ę

obrazu do gory

if (p >= L) p = 0;

for (int j = 1 + p; j <= L; j++)

{

for (int i = 1; i <= K; i++)

ReadPixel(i, j);

}

for (int j = 1; j <= p; j++)

{

for (int i = 1; i <= K; i++)

ReadPixel(i, j);

}

}

Podobnie jak w poprzednim zadaniu zmienna p, oznaczająca aktualną klatkę, może

przyjmować wartość maksymalną L = 256, po czym zeruje się i tak proces się zapętla.

Najpierw wczytywane są wiersze obrazu od pierwszego+p wiersza (p – aktualna

klatka), a następnie wiersze wcześniej pominięte, tzn od pierwszego do ostatniego-p wiersza.

W ten sposób obraz „przewija się” w pionie w kierunku górnej krawędzi.

Efekt działania programu (dwie wybrane klatki):

background image

Zadanie 3.

Napisac algorytm sterujacy generatorem adresu odczytu w celu uzyskania efektu

przesuwania obrazu wzdluz przekatnej ekranu w kierunku gornego prawego wierzchołka.

Przekształcona przeze mnie funkcja wygląda następująco:

public void Efekt3()
{

//efekt: przewijanie po przek

ą

tnej w prawy-gorny rog

if (p >= L) p = 0;

for (int j = 1 + p; j <= L; j++)

{

for (int i = 1; i <= p; i++)

ReadTlo(N);

for (int i = 1; i <= K - p; i++)

ReadPixel(i, j);

}

for (int j = 1; j <= p; j++)

for (int i = 1; i <= K; i++)

ReadTlo(N);

}

Procedura wczytuje kolejne wiersze obrazu od 1+p wiersza – tzn. omija wiersze ktore

wyszly poza górną krawędź ekranu. Wczytuje kolumny począwszy od p pikseli tła – bo

obrazek przesuwa się z każdą klatką o 1px w prawo – a następnie K-p pikseli obrazu – p

pikseli wyszło poza krawędź w klatce numer p. Na koniec wczytywany jest prostokąt

czarnego tła wypełniający pozostałą przestrzeń obrazu.

Efekt działania programu (dwie wybrane klatki):

Wnioski:

Wyniki w każdym z zadań są zgodne z oczekiwaniami. Zrealizowanie tych zadań nie

było trudne, obsługa funkcji ReadPixel() i ReadTlo() oraz zrozumienie działania procedury

wyświetlania obrazu było dosyć łatwe. Myślę, że mogłbym stworzyć inne, bardziej

skomplikowane efekty, wykorzystując wiedzę nabytą w ćwiczeniu.


Wyszukiwarka

Podobne podstrony:
Si lab1, Studia PŚK informatyka, Semestr 5, semestr 5, SI 2, Sprawozdanie lab1
SPRAWOZDANIE lab1
Sprawozdanie lab1
grafika-okno2, Studia PK, Inne - serwer Nexus, Dydaktyka, GK, OpenGL-lab1, AplikacjaWindows
Sprawozdanie lab1
Sprawozdanie lab1
Opała GK sprawozdanie lab4, Studia, WAT Informatyka, s3 - GK - lab grafika komputerowa, Lab4
Sprawozdanie lab1
GK sprawozdanie 2
GK sprawozdanie3
LAB4 GK SPRAWOZDANIE
sprawozdanie lab1 wplyw grubosci blachy i modulu tloczenia na?ldowanie kolnierza
sprawozdanie lab1
sprawozdanie lab1
Jakub Maciejewski I7X6S1 Sprawozdanie lab1
sprawozdanie lab1
Lab1 Sprawozdanie DW

więcej podobnych podstron