sprawozdanie (13)

WOJSKOWA AKADEMIA TECHNICZNA

GRAFIKA KOMPUTEROWA

SPRAWOZDANIE

Z

ZADANIA LABORATORYJNEGO

MODELOWANIE OBIEKTÓW 3D

Grupa szkoleniowa: I1X6S1

Sprawozdanie wykonał: Michał Małek

Prowadzący ćwiczenie: dr inż. Marek Salamon

  1. Treść zadania.

Wykorzystując wybrane funkcje modelowania geometrycznego biblioteki OpenGL i GLUT napisać program przedstawiający perspektywiczny obraz bryły o zadanych parametrach. Podstawę bryły zamodelować w trybie GL_TRIANGLE_FUN. Wprowadzić możliwość zamiany liczby podziałów pionowych i poziomych bryły w zakresie od 5 do 20 (dodatkowo). Wprowadzić możliwość zmiany położenia obserwatorów (dodatkowo).

Zadana bryła :

Stożek w trybie GL_QUADS o promieniu podstawy 1 i jej środku w punkcie (0,0,0) oraz wysokości 3.

  1. Rozwiązanie zadania

Podstawę stożka zamodelowałem za pomocą GL_TRIANGLE_FAN. Pierwszy wierzchołek znajduję się w punkcie o współrzędnych (0,0,0). Współrzędne kolejnych wierzchołków wyznaczane sa w pętli for za pomocą następujących przekształceń:

x = a*cos(d2r(i*skok))

z=a*sin(d2r(i*skok))

gdzie:

a – promień podstawy

i – zmienna iteracyjna pętli

skok – określa odstęp pomiędzy punktami na okręgu (w stopniach)

d2r() – funkcja zamieniająca stopnie na radiany (kod przedstawiony w punkcie 4)

Współrzędna y jest cały czas ustawiona na 0.

Następnie zamodelowałem ściany boczne stożka (tryb GL_QUADS). Wyznaczanie współrzędnych odbywa się w pętli for. Przyjąłem podział ściany bocznej na dwie części. Na początku wyznaczam 2 (z czterech) wierzchołki należące do podstawy (metoda wyznaczania współrzędnych jest identyczna jak w przypadku wyznaczania współrzędnych wierzchołków podstawy). Następnie wyznaczam kolejne 2 wierzchołki w wysokości 3/2 (połowa wysokości stożka, współrzędna y ustawiona na 1.5). Wyznaczanie odbywa się za pomocą następujących przekształceń :

x = (a/2)*cos(d2r(i*skok))

z=(a/2)*sin(d2r(i*skok))

gdzie:

a – promień podstawy

i – zmienna iteracyjna pętli

skok – określa odstęp pomiędzy punktami na okręgu (w stopniach)

d2r() – funkcja zamieniająca stopnie na radiany (kod przedstawiony w punkcie 4)

Następnie wyznaczam kolejne dwie współrzedne górnej części stożka identyczną metodą jak w wyznaczaniu poprzedniuch dwóch punktów. Ostatnie dwa wierzchołki ściany znajdują się w punkcie (0,3,0).

  1. Uzyskane efekty

  1. Kod źródłowy związany z zadaniem

  1. // FUNKCJA ZAMIENIA STOPNIE NA RADIANY

  2. double d2r(double alfa){

  3. return alfa * PI / 180 ;

  4. }

  5. // Funkcja rysujaca stozek w trybie GL_QUAD.

  6. // Srodek stozka znajduje się w punkcie (0,0,0).

  7. // a – promień podstawy

  8. void RysujSzescian(double a,int podz_pion, int podz_poz) {

  9. int pion = 360/podz_pion;

  10. int poz = podz_poz;

  11. int i;

  12. // rysowanie podstawy

  13. glBegin(GL_TRIANGLE_FAN);

  14. glVertex3f(0, 0, 0);

  15. for(i = 0; i <= pion; i++) {

  16. glVertex3f(a*cos(d2r(i*pion)), 0 ,a*sin(d2r(i*pion)));

  17. }

  18. glEnd();

  19. // rysowanie powierzchni bocznej

  20. glBegin(GL_QUADS);

  21. for(i = 0; i <= poz; i++) {

  22. glVertex3f(a*cos(d2r(i*pion)), 0 ,a*sin(d2r(i*pion)));

  23. glVertex3f(a*cos(d2r((i+1)*pion)), 0 ,a*sin(d2r((i+1)*pion)));

  24. glVertex3f((a/2)*cos(d2r((i+1)*pion)), 1.5 ,(a/2)*sin(d2r((i+1)*pion)));

  25. glVertex3f((a/2)*cos(d2r(i*pion)), 1.5 ,(a/2)*sin(d2r(i*pion)));

  26. glVertex3f((a/2)*cos(d2r(i*pion)), 1.5 , a/2)*sin(d2r(i*pion)));

  27. glVertex3f((a/2)*cos(d2r((i+1)*pion)), 1.5 ,(a/2)*sin(d2r((i+1)*pion)));

  28. glVertex3f(0,3,0);

  29. glVertex3f(0,3,0);

  30. }

  31. glEnd();

  32. }

  1. Wnioski z przeprowadzonego ćwiczenia

Zastosowanie równania okręgu (do wyliczenia współrzędnych punktów zewnętrznych każdego przekroju poziomego) i twierdzenia Talesa (do wyliczenia promieni każdego przekroju poziomego) pozwoliło na uzyskanie żądanego efektu. Wzory te są na poziomie szkoły średniej (lub nawet podstawowej). Stąd można uznać, iż same obliczenia od strony algebraicznej nie były zbyt trudne.

Jedyny poważny problem polegał na znalezieniu kolejnych kroków, które należało wykonać. Do tego niezbędna była chociaż minimalna umiejętność myślenia przestrzennego.

Pomimo, iż nie udało mi się wykonać dodatkowych punktów zadania w trakcie trwania laboratorium ćwiczenie uważam za wykonane poprawnie.


Wyszukiwarka

Podobne podstrony:
Sprawozdanie 13 05 2012
Sprawozdanie 13 adam, SPRAWOZDANIA czyjeś
sprawozdanie 7-13, budownictwo, UTP, materialy budowlane
Sprawozdanie 13, FIZYKA
Sprawozdanie N 13
Sprawozdanie 2 (13) doc
Sprawozdanie 13
sprawozdanie 13
Sprawozdanie 13
sprawozdanie 13
sprawozdanie 13
Drgania Ćwiczenie nr 13, Politechnika Lubelska, Studia, semestr 5, Sem V, Sprawozdania, Laborka, Lab
Str.13 - Operacja 80, Politechnika Lubelska, Studia, Studia, organizacja produkcji, laborki-moje, te
Sprawozdanie za rok szkolny 13 Żabki
Protokół z walnego zebrania sprawozdawczo za 13
13 Wyznaczanie środka zginania sprawozdanie
Sprawozdanie 4 (WEiP-2014)(13), WAT, semestr VII, Wprowadzenie do ekonometrii i prognozowania
Ćwiczenie 13, Ćwiczenie 13 (1), Sprawozdanie
13 WYZNACZENIE ŚRODKA ZGINANIA b, Budownictwo PG, sem4, MDwAK, Metody doświadczalne w analizie konst

więcej podobnych podstron