lab 2, WAT, semestr III, Grafika komputerowa


WOJSKOWA AKADEMIA TECHNICZNA

Grafika komputerowa

Laboratoria numer 2

Temat: Modelowanie prostych obiektów przy pomocy prymitywów.

Rafał Łańcucki

I9X5S1

Treść zadań:

1/3 elipsoidy w trybie GL_QUADS o półosiach a = 3, b = 5, c = 2 i środku w punkcie (0, 0, 0),

Rozwiązania zadań:

void RysujSzescian(double r, double nh, double nv)

{

// półosie elipsoidy

Int a = 3;

Int b = 5;

Int c = 2;

double dAlfa,dA,dT;

int i, j;

dAlfa = 360.0L/(double)nh;

dA = 360.0L / (double)nh;

dT = 90.0L/ (double)nv;

// Sciany boczne

for (j=-nv; j<=nv-1; j++) {

glBegin(GL_QUADS);

for( i = 1; (i-1)*dAlfa <= 360.0L*cut; i++) {

glVertex3f(r*a*cos(DEG2RAD(j*dT))*cos(DEG2RAD(i*dA)),

r*b*cos(DEG2RAD(j*dT))*sin(DEG2RAD(i*dA)),

r*c*sin(DEG2RAD(j*dT)));

glVertex3f(r*a*cos(DEG2RAD((j+1)*dT))*cos(DEG2RAD(i*dA)),

r*b*cos(DEG2RAD((j+1)*dT))*sin(DEG2RAD(i*dA)),

r*c*sin(DEG2RAD((j+1)*dT)));

glVertex3f(r*a*cos(DEG2RAD((j+1)*dT))*cos(DEG2RAD((i+1)*dA)),

r*b*cos(DEG2RAD((j+1)*dT))*sin(DEG2RAD((i+1)*dA)),

r*c*sin(DEG2RAD((j+1)*dT)));

glVertex3f(r*a*cos(DEG2RAD(j*dT))*cos(DEG2RAD((i+1)*dA)),

r*b*cos(DEG2RAD(j*dT))*sin(DEG2RAD((i+1)*dA)),

r*c*sin(DEG2RAD(j*dT)));

}

glEnd();

//sciany wyciecia

glBegin(GL_QUADS);

glVertex3f(r*a*cos(DEG2RAD(j*dT))*cos(DEG2RAD(dA)),

r*b*cos(DEG2RAD(j*dT))*sin(DEG2RAD(dA)),

r*c*sin(DEG2RAD(j*dT)));

glVertex3f(r*a*cos(DEG2RAD((j+1)*dT))*cos(DEG2RAD(dA)),

r*b*cos(DEG2RAD((j+1)*dT))*sin(DEG2RAD(dA)),

r*c*sin(DEG2RAD((j+1)*dT)));

glVertex3f(0.0, 0.0, r*c*sin(DEG2RAD((j+1)*dT)));

glVertex3f(0.0, 0.0, r*c*sin(DEG2RAD(j*dT)));

glVertex3f(r*a*cos(DEG2RAD(j*dT))*cos(DEG2RAD(i*dA)),

r*b*cos(DEG2RAD(j*dT))*sin(DEG2RAD(i*dA)),

r*c*sin(DEG2RAD(j*dT)));

glVertex3f(r*a*cos(DEG2RAD((j+1)*dT))*cos(DEG2RAD(i*dA)),

r*b*cos(DEG2RAD((j+1)*dT))*sin(DEG2RAD(i*dA)),

r*c*sin(DEG2RAD((j+1)*dT)));

glVertex3f(0.0, 0.0, r*c*sin(DEG2RAD((j+1)*dT)));

glVertex3f(0.0, 0.0, r*c*sin(DEG2RAD(j*dT)));

glEnd();

}

}

Gdzie : r- promień, nh - ilość południków, nv - ilość równoleżników.

Pierwsza, główna pętla for reguluje nam ilość równoleżników w figurze, oraz ich promienie.

Pętla wewnętrzna rysuje nam punkty składające się w południki. Ograniczenie fora wewnętrznego `<= 360.0L*cut' zapewnia wycinek elipsoidy zależny od zmiennej cut, która w danym przypadku ustawiona jest na poziomie 0.33. Ściany wycięcia ustawione są odpowiednio: 1. w miejscu od którego zaczynamy budowanie figury, 2. uzależniona jest od `i' które w tym momencie kodu posiada stałą wartość po ostatnim obrocie fora, co ustawia ją równo z ostatnim powstałym południkiem.

Grafika poglądowa:

0x01 graphic

Za zmianę właściwości figury odpowiadał kod:

{

switch(klawisz)

{

case '1':

Pion=(Pion<42) ? Pion+1 : 42;

break;

case 'q':

Pion=(Pion>21) ? Pion-1 : 21;

break;

case 'w':

Poz=(Poz>7) ? Poz-1 : 7;

break;

case '2':

Poz=(Poz<14) ? Poz+1 : 14;

break;

case '3':

cut =(cut <=0.3) ? cut+0.05 : 0.33;

break;

case 'e':

cut =(cut >=0.09) ? cut -0.05 : 0.03;

break;

}

if (klawisz == 27) exit(0);

}

Całość głownie opiera się na switch'u, gdzie zwiększane są zmienne: Pion - ilość południków, Poziom - ilość równoleżników, oraz zmienna cut, która pozwala nam `rysować' kolejne poziomy figury. Dodatkowo wprowadzono blokadę na wprowadzenie zbyt małej lub dużej liczby podziałów bryły.

Wnioski:

Postawiony cel zadania został zrealizowany w pełni poprawnie. Tryb modelowania GL_QUADS jak widać pozwalał na osiągnięcie zamierzonego celu.



Wyszukiwarka

Podobne podstrony:
I Ćwiczenie 5, WAT, semestr III, Grafika komputerowa
I7X1S1 Loay Achmasiewicz, WAT, semestr III, Grafika komputerowa
I Ćwiczenie 6, WAT, semestr III, Grafika komputerowa
50, WAT, semestr III, Grafika komputerowa
Laboratorium3 PGK zadania, WAT, semestr III, Grafika komputerowa
Zadanie poprawkowe GK 2008, WAT, semestr III, Grafika komputerowa
gk cw1, WAT, semestr III, Grafika komputerowa
Ogolne, WAT, semestr III, Grafika komputerowa
gk efekty kody, WAT, semestr III, Grafika komputerowa
Zadania I7X1N1poprawkowe, WAT, semestr III, Grafika komputerowa
Zadania I7X, WAT, semestr III, Grafika komputerowa
I Ćwiczenia 4 zadania(na czysto), WAT, semestr III, Grafika komputerowa
Paulina Kot I7X1N1 sprawozdanie Lampka, WAT, semestr III, Grafika komputerowa
Grupa I7X poprawkowe, WAT, semestr III, Grafika komputerowa
Laszuk kubek, WAT, semestr III, Grafika komputerowa
Laboratorium3 PGK zadania C02C, WAT, semestr III, Grafika komputerowa
Ciuchcia, WAT, semestr III, Grafika komputerowa
gk sprawko, WAT, semestr III, Grafika komputerowa

więcej podobnych podstron