lampka Faustman

background image

WOJSKOWA AKADEMIA TECHNICZNA

LABORATORIUM GRAFIKA KOMPUTEROWA

SPRAWOZDANIE:

Laboratorium 3 – modelowanie obiektów za pomocą

prymitywów

Przestrzennych

PROWADZADZĄCY:

dr inż. Marek Salamon

WYKONAŁ:

Mateusz Faustman I7X1N1

DATA:

06.02.2009

background image

1.

Treść zadania:

Zadanie polegało na napisaniu programu który przy pomocy biblioteki GLUT narysuje lampę
stworzoną z prymitywów.

Użytkownik za pomocą klawiatury powinien mieć możliwość

wprowadzenia zmian następujących parametrów:

a)

Zmiana wysokości lampy pod – odchylenie w górę +60 stopni, odchylenie w dół -30 stopni

b)

Obrót ramienia lampy

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

a)

Odległości obserwatora od obiektu

b)

Orientacji obserwatora w zakresie [0, 360] stopni względem osi OX OY i OZ.

2) Kod funkcji realizujących zadanie wraz z opisem

void RysujLampke()

{

glClearColor(0,0,0,0) ;

glBegin(GL_LINES);

uklad(ukl);

glEnd();

glPushMatrix();

// podstawa

glPushMatrix();

GLUquadricObj *trzon;

trzon=gluNewQuadric();

Tworzy obiekt Quadric

glColor3f(255,255,255);

Ustawia kolor na czarny

glTranslatef(0.0,0.5,0.0);

Zaczyna rysowanie w pkt 0;0,5;0

glRotatef(90.0,1,0,0);

Obrót o 90 stopni względem osi X

gluCylinder(trzon,2.5,2.5,0.5,20,15);

Tworzy cylinder o promieniu 5

gluDisk(trzon,0,2.5,20,15);

Tworzy górną podstawę

glTranslatef(0,0,0.5);

gluDisk(trzon,0,2.5,20,15);

Tworzy dolną podstawę

gluDeleteQuadric(trzon);

glPopMatrix();

//pozioma

glPushMatrix();

glColor3f(255,255,255);

Ustawia kolor na czarny

glTranslatef(0,3,0);

Zaczyna rysowanie w pkt 0;3;0

glScalef(1,10,1);

glRotatef(obr_w_prawo,0,1,0);

Obraca zgodnie zwartością parametru obr_w_prawo

glutWireCube(0.5);

Tworzy sześcian o boku 0,5

glPopMatrix();

//pionowa

glPushMatrix();

glRotatef(obr_w_prawo,0,1,0);

Obraca zgodnie z aktualną wartością parametru obr_w_prawo

glTranslatef(0,5,0);

Przemieszcza obiekt o 5 jednostek po osi Y

glRotated(obr_w_lewo,0,0,1);

Obraca zgodnie z aktualną wartością parametru obr_w_lewo

glTranslatef(-1.5,0,0.5);

Przemieszcza obiekt o -1,5X, 0Y, 0,5Z

glPushMatrix();

background image

glScalef(20,1,1);

Skaluje w x,y,z

glutWireCube(0.25);

Tworzy sześcian o boku 025

glPopMatrix();

//uchwyt

glPushMatrix();

GLUquadricObj *uchwyt;

Tworzy obiekt
uchwyt

uchwyt=gluNewQuadric();

glColor3f(255,255,255);

Ustawia kolor na czarny

glTranslatef(-2.75,0.5,0.0);

Zaczyna rysowanie w pkt -2,7;0,5;0

glRotatef(90,1,0,0);

Obrót o 90 stopni względem osi X

gluCylinder(uchwyt,0.25,0.25,1.0,20,15);

Tworzy cylinder

gluDisk(trzon,0,0.25,20,15);

Tworzy pokrywe górną cylindra

gluDeleteQuadric(uchwyt);

usuwa obiekt uchwyt

glPopMatrix();

// abazur

glPushMatrix();

GLUquadricObj *abazur;

Tworzy obiekt abazur

abazur=gluNewQuadric();

glColor3f(255,255,255);

Ustawia kolor na czarny

glTranslatef(-2.75,-0.5,0.0);

Zaczyna rysowanie w pkt -2,7;0,5;0

glRotatef(90.0,1,0,0);

Obrót o 90 stopni względem osi X

gluCylinder(abazur,0.5,1.0,1.0,20,15);

Tworzy cylinder o górnej podstawie 0,5 i dolnej 1

gluDisk(trzon,0,0.5,20,15);

Tworzy górną podstawę cylindra

gluDeleteQuadric(abazur);

która jest jednocześnie dolna podstawa uchwytu

glPopMatrix();

glPopMatrix();

glPopMatrix();

}

void ObslugaKlawiatury(unsigned char klawisz, int x, int y)

{

switch (klawisz)

{

case '

x

' : OBSERWATOR_OBROT_X ++; break;

case '

X

' : OBSERWATOR_OBROT_X --; break;

case '

y

' : OBSERWATOR_OBROT_Y ++; break;

case '

Y

' : OBSERWATOR_OBROT_Y --; break;

case '

z

' : OBSERWATOR_OBROT_Z ++; break;

case '

Z

' : OBSERWATOR_OBROT_Z --; break;

case '

o

' : OBSERWATOR_ODLEGLOSC ++; break;

case '

O

' : OBSERWATOR_ODLEGLOSC --; break;

case '

r

' : obr_w_prawo++; break;

case

'l

' : obr_w_prawo--; break;

case '

d

' : if(obr_w_lewo<30)obr_w_lewo++; break;

case '

g

' : if(obr_w_lewo>-60)obr_w_lewo--; break;

case '

u

' : if(ukl==1)ukl=0;else ukl=1;break;

case

27

: exit(0); break; //esc

background image

3)Wnioski:
Podczas tego laboratorium zapoznaliśmy się z modelowaniem bardziej skomplikowanych
obiektów niż na poprzednich laboratoriach. Tym razem wykorzystaliśmy prymitywy
przestrzenne dostępne w bibliotekach GLU oraz GLUT co zdecydowanie ułatwia
modelowanie takich obiektów w porównaniu do metod wykorzystywanych na poprzednim
laboratorium. Dzięki prymitywom nie trzeba już kodować funkcji odpowiedzialnych za
narysowanie figury, wystarczy podać parametry i położenie.


Wyszukiwarka

Podobne podstrony:
lampka Faustman
lampka
71 NW 04 Ozdobna lampka
peugeot zapala sie lampka silnika
mazda 3 zapala sie lampka poduszki powietrznej
Lampka rowerowa led(Edw) id 263 Nieznany
walec Faustman
citroen XM lampka plynu chlodzacego
2001 05 Niezwykła lampka rowerowa
utwory, W2, (Świeczniki pogaszone; na stole mała lampka kuchenna)
Paulina Kot I7X1N1 sprawozdanie Lampka, WAT, semestr III, Grafika komputerowa
73 Nw 07 Ozdobna lampka
Lampka wina na zdrowie
mb M lampka ilosci plynu chlodniczego
LAMPKA KONTROLNA lk 713
Lampka z rozjaśniaczem
Kaiser lampka, WAT, semestr III, Grafika komputerowa
mb M zapala sie lampka SRS

więcej podobnych podstron