gk sprawozdanie lab1


Michał Polkowski Data wykonania ćwiczenia:
gr. I8Y3S1 2.12.2009r.
WOJSKOWA AKADEMIA TECHNICZNA
Laboratorium Grafiki komputerowej
SPRAWOZDANIE
z ćwiczenia laboratoryjnego nr 1.
Prowadzący:
mgr inż. Wojciech Sulej
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żdzone  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.
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):
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ędz 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ędz 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:
Sprawozdanie Lab1 gr7B
sprawozdanie lab1
Sprawozdanie Lab1
Sprawozdanie Java Lab1 Karol Leszczyński gr 13
tou lab1 sprawozdanie (1)
Lab1 Sprawozdanie
Sprawozdanie GK Łuki
Lab1 sprawozdanie
Sprawozdanie AIM LAB1 Piotrowski
Sprawozdanie Nsst LAB1 KACZMAREK (1)
Lab1 Sprawozdanie DW
lab1 sprawozdanie
Lab1 RoboWorks
sprawozdanie felixa2

więcej podobnych podstron