GK LAB3, Studia, WAT Informatyka, s3 - GK - grafika komputerowa, LAB4


28 grudnia 2009

Wojskowa Akademia Techniczna


Sprawozdanie


Grafika Komputerowa


Laboratorium nr 4: Przekształcenia geometryczne.
(zadanie 3)

Prowadzący zajęcia:

 mgr inż. Sulej Wojciech



Sprawozdanie wykonał:



Grupa:


I. Treść zadania.

Napisać program przedstawiający obiekt zbudowany z prymitywów przestrzennych udostępnionych przez biblioteki GLU i GLUT. Użytkownik za pomocą klawiatury powinien mieć możliwość wprowadzania zmian następujących parametrów:

  1. Kąta obrotu śmigła,

  2. Kąta odchylenia, pochylenia i przechylenia rakiety.

W programie uwzględnić możliwość interaktywnej zmiany położenia obserwatora poprzez podanie następujących parametrów:

  1. Odległość obserwatora od obiektu,

  2. Wysokości obserwatora względem płaszczyzny, na której położony jest obiekt,

  3. Kąta obrotu wokół obiektu w zakresie [0, 360] z krokiem 1.

Uwaga: Obserwator jest zawsze zwrócony przodem w kierunku obiektu.

II. Rysunek poglądowy.

0x01 graphic

III. Wstęp teoretyczny.

Do realizacji zadania wykorzystane zostały funkcje biblioteki GLUT oraz GLU:

IV. Zamodelowanie obiektu.

1. Trzon samolotu:

glPushMatrix();

//sciany trzonu

//cylinder

glTranslatef(0.0, 0.0, -5.0);

gluCylinder(trzon, 0.76, 0.76, 10.0, 45, 45);

//zamkniecie cylindra tylnie dyskiem

gluDisk(trzon, 0, 0.76, 35, 35);

//zamkniecie cylindra przednie sfera

glTranslatef(0.0, 0.0, 10.0);

gluSphere(trzon, 0.75, 25, 25);

glPopMatrix();

W powyższym fragmencie kodu zamodelowałem trzon samolotu składający się z głównego modułu - cylindra (bez podstaw) w środku układu współrzędnych oraz jego zakończeń. Tylnym zakończeniem jest cylinder zaś przednim sfera. Obie figury o promieniu równym promieniowi cylindra po uwzględnieniu odpowiednich przesunięć.

2. Główne skrzydło:

glPushMatrix();

glTranslatef(0.0, 0.76-0.125, 0.0);

glScalef(8.0, 0.25, 3);

glutWireCube(1);

glPopMatrix();

Koniecznym do narysowania skrzydła w odpowiednich proporcjach było przesunięcie pkt. z którego było ono rysowane na promień samolotu z korektą połowy grubości samego skrzydła. Następnie sześcian w układzie został przeskalowany - dla nadania mu odpowiedniego kształtu - i narysowany.

3. Ogon pionowy:

glPushMatrix();

glTranslatef(0.0, 0.76+1, -5.0+0.75);

glScalef(0.25, 2.0, 1.5);

glutWireCube(1);

glPopMatrix();

Analogicznie do skrzydła głównego zmieniamy pkt. rysowania oraz skalujemy i rysujemy figurę.

4. Stateczniki:

glPushMatrix();

glTranslatef(0.76+1, 0.0, -5.0+0.75);

glScalef(2.0, 0.25, 1.5);

glutWireCube(1);

glTranslatef(-(0.76+1), 0.0, 0.0);

glutWireCube(1);

glPopMatrix();

Ten fragment kodu jest również analogiczny do poprzednich. Rysujemy dwa sześciany wcześniej odpowiednio skalując i przesuwając układy współrzędnych.

5. Belka śmigła

glRotatef(parametr, 0, 0, 1);

glPushMatrix();

glTranslatef(0.0, 0.0, 5.0+0.75+0.125);

glScalef(0.25, 4.0, 0.25);

glutWireCube(1);

glPopMatrix();

Funkcja glRotate umieszczona w tym miejscu pozwala nam na sterowanie śmigłem za pomocą parametru. Jako argumenty przyjmuje kąt obrotu oraz oznaczenie wektora względem którego śmigło będzie się obracać. Dale podobnie jak poprzednio skalujemy, dokonujemy translacji i rysujemy sześcian.

V. Sterowanie.

Sterowanie obiektem realizujemy poprzez przypisanie odpowiednim klawiszom zminy parametrów, przy czym efekt obracania całego samolotu uzyskujemy przez umieszczenie odpowiednich instrukcji na początku funkcji rysującej:

//translacja punktu przesuwania

glTranslatef(0.0, 0.0, -5.0);

//odchylanie pionowe

glRotatef(rotPOZ, 1, 0, 0);

//odchylanie poziome

glRotatef(rotPIO, 0, 1, 0);

//obracanie wkolo wlasnej osi

glRotatef(rotOBR, 0, 0, 1);

//powrót do środka układu

glTranslatef(0.0, 0.0, +5.0);

Wpływają one na całość wykonywanych po nich instrukcji w tej funkcji.

V. Zrzuty ekranu.

0x01 graphic

Zrzut1. Pozycja wyjściowa.

0x01 graphic
Zrzut2. Przykładowe przemieszczenie obiektu.

VI. Wnioski.

    Po zaprogramowaniu zadanych działań na obrazie mogę stwierdzić, iż jest to praca wymagająca sprawnej wyobraźni i dokładności. Podczas tego laboratorium zapoznaliśmy się z modelowaniem bardziej skomplikowanych obiektów zbudowanych z wielu prymitywów. Było ono jednak prostsze ze względu na możliwość wykorzystania prymitywów przestrzennych dostępnych w bibliotekach GLU i GLUT. Ponadto do obiektu zostały dodane efekty ruchomości poprzez sterowanie zdefiniowanymi klawiszami.




Wyszukiwarka

Podobne podstrony:
sprawozdanie oswietlenie, Studia, WAT Informatyka, s3 - GK - lab grafika komputerowa, Lab3
Zadania L3 I6Y3S1, Studia, WAT Informatyka, s3 - GK - lab grafika komputerowa, Lab3
tresc lab3 gk, Studia, WAT Informatyka, s3 - GK - lab grafika komputerowa, Lab3
Zadania I1Y3S1, Studia, WAT Informatyka, s3 - GK - grafika komputerowa, LAB3
Zadania L3 I6Y4S1, Studia, WAT Informatyka, s3 - GK - lab grafika komputerowa, Lab3
sprko-pieci, Studia, WAT Informatyka, s3 - GK - lab grafika komputerowa, Lab3
SPR-ANKI, Studia, WAT Informatyka, s3 - GK - lab grafika komputerowa, Lab2
Zadanie IY4S1, Studia, WAT Informatyka, s3 - GK - grafika komputerowa, LAB2
sprawozdanie3, Studia, WAT Informatyka, s3 - GK - lab grafika komputerowa, Lab4
Rzezba Lab4, Studia, WAT Informatyka, s3 - GK - grafika komputerowa, LAB4
KWADRYKI, Studia, WAT Informatyka, s3 - GK - lab grafika komputerowa, Lab2
OpenGl, Studia, WAT Informatyka, s3 - GK - lab grafika komputerowa, Lab4
Zadania L3 I6X4S1, Studia, WAT Informatyka, s3 - GK - lab grafika komputerowa, Lab4
Zadania L4 I6Y4S1, Studia, WAT Informatyka, s3 - GK - lab grafika komputerowa, Lab4
Zadania I1Y3S1, Studia, WAT Informatyka, s3 - GK - grafika komputerowa, LAB4
gk sprawko lab4 w szachownice wook, Studia, WAT Informatyka, s3 - GK - grafika komputerowa, LAB4
sprawko-pieci, Studia, WAT Informatyka, s3 - GK - lab grafika komputerowa, Lab2
Zadania L2 I6Y3S1, Studia, WAT Informatyka, s3 - GK - lab grafika komputerowa, Lab2
lab4 Paweł Madejski I7X1, Studia, WAT Informatyka, s3 - GK - grafika komputerowa, LAB4

więcej podobnych podstron