Prosty program- cpp. #include <GL/glut.h>

Wielkość: px
Rozpocząć pokaz od strony:

Download "Prosty program- cpp. #include <GL/glut.h>"

Transkrypt

1 Wizualizacje 3D

2 Prosty program- cpp #include <GL/gl.h> #include <GL/glu.h> #include <GL/glut.h> int main(int argc, char** argv) { glutinit(&argc, argv); glutinitdisplaymode( GLUT_DOUBLE GLUT_RGBA ); glutinitwindowsize(400, 400); glutinitwindowposition(100, 100) ; glutcreatewindow("opengl"); glutdisplayfunc( Display ); glutreshapefunc( Reshape); glutmainloop();

3 Prosty program cpp (2) void Display() { glclearcolor( 0.0, 0.0, 0.0, 0.0); glclear(gl_color_buffer_bit); glcolor3f( 1.0, 1.0, 1.0 ); glbegin( GL_TRIANGLES ); glvertex3f(-1, -1, -0.5); glvertex3f(-1, 1, -0.5); glvertex3f(1, 1, 1); glend(); glflush(); glutswapbuffers(); glutpostredisplay(); void Reshape(int w, int h) { Display();

4 Obszar renderingu void glviewport(glint x, GLint y, GLsizei width, GLsizei height) W aplikacjach pracujących w systemach okienkowych problem zmiany rozmiaru okna jest tak powszechny, że wymaga specjalnego potraktowania. Jednym z możliwych sposobów jego rozwiązania jest dynamiczna modyfikacja obszaru renderingu. Służy to tego właśnie ta funkcja. x, y współrzędne lewego dolnego narożnika obszaru renderingu względem lewego dolnego narożnika okna height wysokość okna renderingu width szerokość okna renderingu

5 Zastosowanie glviewport void Reshape (int w, int h) { if ( w < h ) { glviewport(0, (h-w)/2, w, w); else { glviewport((w-h)/2, 0, h, h); Display();

6 Macierze OpenGL zawiera kilka stosów macierzy, z których w przykładowym programie wykorzystamy stos macierzy rzutowania oraz stos macierzy modelowania. Wybór bieżącej macierzy umożliwia funkcja: void glmatrixmode (GLenum mode) Parametr mode może przyjąć jedna z wartości: GL_MODELVIEW - macierz modelowania, GL_PROJECTION - macierz rzutowania, GL_TEXTURE - macierz tekstury.

7 Macierz jednostkowa Ponieważ początkowa wartość wybranej macierzy jest nieokreślona, przed wykonaniem jakiejkolwiek czynności na macierzy należy przyporządkować macierz jednostkową void glloadidentity (void)

8 Rzutowanie prostokątne void glortho(gldouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble near, GLdouble far) Rozmiar bryły odcinania w rzutowaniu prostokątnym Parametry określają współrzędne punktów przecięcia płaszczyzn tworzących bryłę odcinania z osiami układu współrzędnych kartezjańskich

9 Rzutowanie prostokątne Domyślnie bryła ma postać sześcianu o bokach = 2 glortho(-1,1,-1,1,-1,1)

10 Rzutowanie prostokątne dla sceny 2D void gluortho2d (GLdouble left, GLdouble right, GLdouble bottom, GLdouble top) Parametry left, right, bottom i top odpowiadaja parametrom funkcji glortho, a przednia (near) i tylna (far) płaszczyzna obcinania maja wartosci odpowiednio -1 i 1.

11 Przykład zastosowania rzutowania perspektywicznego void Display () { glclearcolor (1.0,1.0,1.0,1.0); glclear (GL_COLOR_BUFFER_BIT); glmatrixmode (GL_MODELVIEW); glloadidentity (); glcolor3f (0.0,0.0,0.0); glbegin (GL_LINES); glvertex3f (1.0, 1.0, 1.0); glvertex3f (1.0, -1.0, 1.0); glvertex3f (1.0, -1.0, 1.0); glvertex3f (1.0, -1.0, -1.0); glvertex3f (1.0, -1.0, -1.0); glvertex3f (1.0, 1.0, -1.0); glvertex3f (1.0, 1.0, -1.0); glvertex3f (1.0, 1.0, 1.0); glvertex3f (-1.0, 1.0, 1.0); glvertex3f (-1.0, -1.0, 1.0); glvertex3f (-1.0, -1.0, 1.0); glvertex3f (-1.0, -1.0, -1.0); glvertex3f (-1.0, -1.0, -1.0); glvertex3f (-1.0, 1.0, -1.0); glvertex3f (-1.0, 1.0, -1.0); glvertex3f (-1.0, 1.0, 1.0); glvertex3f (1.0, 1.0, 1.0); glvertex3f (-1.0, 1.0, 1.0); glvertex3f (1.0, -1.0, 1.0); glvertex3f (-1.0, -1.0, 1.0); glvertex3f (1.0, -1.0, -1.0); glvertex3f (-1.0, -1.0, -1.0); glvertex3f (1.0, 1.0, -1.0); glvertex3f (-1.0, 1.0, -1.0); glend (); glflush (); glutswapbuffers();

12 void Reshape(int w, int h) { if ( w < h ) { glviewport(0, (h-w)/2, w, w); else { glviewport((w-h)/2, 0, h, h); glmatrixmode (GL_PROJECTION); glloadidentity (); glortho (-2.0, 2.0, -2.0, 2.0, -2.0, 2.0); Display();

13 Rzutowanie perspektywiczne Rzutowanie perspektywiczne daje bardziej realistyczne efekty niż rzutowanie prostokątne, stąd jest szeroko stosowane np. w grach. Parametry bryły odcinania, która przy rzutowaniu perspektywicznym ma postać ostrosłupa ściętego o wierzchołku znajdującym się w początku układu współrzędnych.

14 Rzutowanie perspektywiczne (2) void glfrustum (GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble near, GLdouble far) Parametry left, right, bottom i top wyznaczaja rozmiary górnej podstawy bryły odcinania (jest to obszar bezposrednio odwzorowywany na obszar renderingu), a near i far wyznaczaja połozenie odpowiednio górnej i dolnej podstawy ostrosłupa (przedniej i tylnej płaszczyzny odcinania), które zawieraja sie w płaszczyznach o równaniach: z = near i z = far. Parametry near i far musza miec wartosci dodatnie.

15 Przekształcenia geometryczne (3) Macierz rzutowania perspektywicznego, tworzona przez funkcje glfrustum i mnożona przez aktualnie wybrana macierz, ma postać:

16 void Reshape (int w, int h) { if ( w < h ) { glviewport(0, (h-w)/2, w, w); else { glviewport((w-h)/2, 0, h, h); glmatrixmode (GL_PROJECTION); glloadidentity (); glfrustum(-2.0,2.0,-2.0,2.0,1.0,5.0); Display();

17 Przykład - glfrustum void Display () { glclearcolor (1.0,1.0,1.0,1.0); glclear (GL_COLOR_BUFFER_BIT); glmatrixmode (GL_MODELVIEW); glloadidentity (); gltranslatef (0, 0, -3.0); glcolor3f (0.0,0.0,0.0); glbegin (GL_LINES); glvertex3f (1.0, 1.0, 1.0); glvertex3f (1.0, -1.0, 1.0); glvertex3f (1.0, -1.0, 1.0); glvertex3f (1.0, -1.0, -1.0); glvertex3f (1.0, -1.0, -1.0); glvertex3f (1.0, 1.0, -1.0); glvertex3f (1.0, 1.0, -1.0); glvertex3f (1.0, 1.0, 1.0); glvertex3f (-1.0, 1.0, 1.0); glvertex3f (-1.0, -1.0, 1.0); glvertex3f (-1.0, -1.0, 1.0); glvertex3f (-1.0, -1.0, -1.0); glvertex3f (-1.0, -1.0, -1.0); glvertex3f (-1.0, 1.0, -1.0); glvertex3f (-1.0, 1.0, -1.0); glvertex3f (-1.0, 1.0, 1.0); glvertex3f (1.0, 1.0, 1.0); glvertex3f (-1.0, 1.0, 1.0); glvertex3f (1.0, -1.0, 1.0); glvertex3f (-1.0, -1.0, 1.0); glvertex3f (1.0, -1.0, -1.0); glvertex3f (-1.0, -1.0, -1.0); glvertex3f (1.0, 1.0, -1.0); glvertex3f (-1.0, 1.0, -1.0); glend (); glflush (); glutswapbuffers();

18 Rzutowanie perspektywiczne (4) Alternatywny sposób określania rzutu perspektywicznego umożliwia funkcja z biblioteki GLU: void gluperspective (GLdouble fovy, GLdouble aspect, GLdouble znear, GLdouble zfar) gdzie parametr fovy określa w stopniach kat widzenia obserwatora zawarty w płaszczyźnie YZ (kąt między top, 0, a bottom), a aspect jest stosunkiem szerokości do wysokości przedniej płaszczyzny odcinania, czyli górnej podstawy ostrosłupa ograniczającego scenę 3D. Parametry znear i zfar odpowiadają parametrom near i far funkcji glfrustum.

19 Rzutowanie perspektywiczne (5) Macierz rzutowania perspektywicznego, tworzona przez funkcje gluperspective i mnożoną przez aktualnie wybrana macierz, ma postać:

20 Rzutowanie perspektywiczne (6) Wewnętrznie funkcja gluperspective wykorzystuje do ustawienia macierzy rzutowania perspektywicznego funkcję glfrustum. Oto wzory przekształcenia parametrów funkcji gluperspective na parametry glfrustum:

21 Przykład - gluperspective

22 Obsługa klawiatury Podstawowa funkcja obsługi klawiatury ma trzy parametry: key - kod ASCII klawisza, x, y - współrzędne kursora myszki w chwili naciśnięcia przycisku klawiatury. Aby obsługa klawiatury działała, w części głównej programu należy włączyć funkcje obsługi klawiatury wywołując funkcje: void glutkeyboardfunc (void (*func)(unsigned char key, int x, int y))

23 Przykład #include <GL/glut.h> #include <stdlib.h> GLdouble fovy = 90; int main (int argc, char *argv[]) { glutinit (&argc,argv); glutinitdisplaymode (GLUT_DOUBLE GLUT_RGB); glutinitwindowsize (400,400); glutcreatewindow ("Szescian"); glutdisplayfunc (Display); glutreshapefunc (Reshape); glutkeyboardfunc (Keyboard); glutmainloop (); return 0;

24 void Reshape (int width, int height) { glviewport (0, 0, width, height); glmatrixmode (GL_PROJECTION); glloadidentity (); GLdouble aspect = 1; if (height > 0) aspect = width/(gldouble)height; gluperspective (fovy,aspect,1.0,5.0); Display ();

25 void Keyboard (unsigned char key, int x, int y) { if (key == '+' && fovy < 180) fovy++; else if (key == '-' && fovy > 0) fovy--; Reshape (glutget (GLUT_WINDOW_WIDTH), glutget (GLUT_WINDOW_HEIGHT));

26 Położenie obserwatora Biblioteka GLU zawiera funkcje glulookat, która pozwala na jednorazowe zdefiniowanie wszystkich parametrów opisujących obserwatora: void glulookat (GLdouble eyex, GLdouble eyey,gldouble eyez, GLdouble centerx, GLdouble centery, GLdouble centerz, GLdouble upx, GLdouble upy, GLdouble upz) eyex, eyey, eyez - współrzedne połozenia obserwatora, centerx, centery, centerz - współrzedne punktu, w którego kierunku jest zwrócony obserwator, upx, upy, upz - współrzedne wektora okreslajacego kierunek do góry. Domyślne położenie obserwatora odpowiada wywołaniu: glulookat (0.0, 0.0, 0.0, 0.0, 0.0, , 0.0, 1.0, 0.0)

27 Obsługa klawiszy specjalnych W głównym programie można włączyć obsługę klawiszy kursora i klawiszy funkcyjnych wywołując funkcje: void glutspecialfunc (void (*func)(int key, int x, int y)) x, y - współrzędne kursora myszki w chwili naciśnięcia przycisku klawiatury. key - kod przycisku; zwracana jest jedna z poniższych wartości: GLUT_KEY_F1 - przycisk F1, GLUT_KEY_F2 - przycisk F2, ( ) GLUT_KEY_F11 - przycisk F11, GLUT_KEY_F12 - przycisk F12, GLUT_KEY_LEFT - kursor w lewo, GLUT_KEY_UP - kursor do góry, GLUT_KEY_RIGHT - kursor w prawo, GLUT_KEY_DOWN - kursor w dół, GLUT_KEY_PAGE UP - przycisk Page Up GLUT_KEY_PAGE DOWN - przycisk Page Down, GLUT_KEY_HOME - przycisk Home, GLUT_KEY_END - przycisk End, GLUT_KEY_INSERT - przycisk Insert.

28 Przykład - glulookat #include <GL/glut.h> #include <stdlib.h> GLdouble eyex = 0; GLdouble eyey = 0; GLdouble eyez = 3; GLdouble centerx = 0; GLdouble centery = 0; GLdouble centerz = -100; int main (int argc, char *argv[]) { glutinit (&argc,argv); glutinitdisplaymode (GLUT_DOUBLE GLUT_RGB); glutinitwindowsize (400,400); glutcreatewindow ("Szescian"); glutdisplayfunc (Display); glutreshapefunc (Reshape); glutkeyboardfunc (Keyboard); glutspecialfunc (SpecialKeys); glutmainloop (); return 0;

29 void Reshape (int w, int h) { if ( w < h ) { glviewport(0, (h-w)/2, w, w); else { glviewport((w-h)/2, 0, h, h); glmatrixmode(gl_projection); glloadidentity(); glfrustum (-2.0,2.0,-2.0,2.0,1.0,5.0); Display ();

30 void Keyboard (unsigned char key, int x, int y) { if (key == '+') else eyez -= 0.1; if (key == '-') eyez += 0.1; Reshape (glutget (GLUT_WINDOW_WIDTH),glutGet (GLUT_WINDOW_HEIGHT)); void SpecialKeys (int key, int x, int y) { switch (key) { case GLUT_KEY_LEFT: eyex += 0.1; break; case GLUT_KEY_UP: eyey -= 0.1; break; case GLUT_KEY_RIGHT: eyex -= 0.1; break; case GLUT_KEY_DOWN: eyey += 0.1; break; Reshape (glutget (GLUT_WINDOW_WIDTH),glutGet (GLUT_WINDOW_HEIGHT));

31 void Display () { glclearcolor (1.0,1.0,1.0,1.0); glclear (GL_COLOR_BUFFER_BIT); glmatrixmode (GL_MODELVIEW); glloadidentity (); glulookat(eyex,eyey,eyez, centerx,centery,centerz, 0,1,0); glcolor3f (0.0,0.0,0.0); glbegin (GL_LINES); glvertex3f (1.0, 1.0, 1.0); glvertex3f (1.0, -1.0, 1.0); glvertex3f (1.0, -1.0, 1.0); glvertex3f (1.0, -1.0, -1.0); glvertex3f (1.0, -1.0, -1.0); glvertex3f (1.0, 1.0, -1.0); glvertex3f (1.0, 1.0, -1.0); glvertex3f (1.0, 1.0, 1.0); glvertex3f (-1.0, 1.0, 1.0); glvertex3f (-1.0, -1.0, 1.0); glvertex3f (-1.0, -1.0, 1.0); glvertex3f (-1.0, -1.0, -1.0); glvertex3f (-1.0, -1.0, -1.0); glvertex3f (-1.0, 1.0, -1.0); glvertex3f (-1.0, 1.0, -1.0); glvertex3f (-1.0, 1.0, 1.0); glvertex3f (1.0, 1.0, 1.0); glvertex3f (-1.0, 1.0, 1.0); glvertex3f (1.0, -1.0, 1.0); glvertex3f (-1.0, -1.0, 1.0); glvertex3f (1.0, -1.0, -1.0); glvertex3f (-1.0, -1.0, -1.0); glvertex3f (1.0, 1.0, -1.0); glvertex3f (-1.0, 1.0, -1.0); glend (); glflush (); glutswapbuffers();

32 Przekształcenia geometryczne Obrót realizują funkcje: void glrotated (GLdouble angle, GLdouble x, GLdouble y, GLdouble z) void glrotatef (GLfloat angle, GLfloat x, GLfloat y, GLfloat z) Gdzie: angle - kat obrotu w stopniach, x, y, z - współrzędne wektora określającego oś obrotu. Obrót realizowany jest w kierunku przeciwnym do ruchu wskazówek zegara w kierunku prostej wyznaczonej przez wektor [x, y, z] zaczepionym w początku układu współrzędnych.

33 Przekształcenia geometryczne cd. Funkcje glrotated i glrotatef mnożą bieżąca macierz przez macierz obrotu, która ma następująca postać

34 Przekształcenia geometryczne cd. Skalowanie void glscalef (GLfloat x, GLfloat y, GLfloat z) void glscalex (GLfixed x, GLfixed y, GLfixed z) gdzie x, y, z są współczynnikami skalowania względem kolejnych osi układu współrzędnych.

35 Przekształcenia geometryczne cd. Funkcje te mnożą bieżącą macierz przez macierz skalowania, która ma postać:

36 Przekształcenia geometryczne cd. Przesunięcie (translacja) void gltranslatef (GLfloat x, GLfloat y, GLfloat z) void gltranslatex (GLfixed x, GLfixed y, GLfixed z) gdzie x, y, z sa współrzednymi wektora przesuniecia.

37 Przekształcenia geometryczne cd. Funkcje mnożą bieżącą macierz przez macierz translacji, która ma postać:

38 Mnożenie macierzy przekształceń glmatrixmode(gl_model_v IEW); glloadidentity( ); gltranslatef(0.2,0.3,0.5); glscalef(1.5,1.5,0.5); glrotatef(30,1.0,0.0,0.0); glrotatef(45,0.0,1.0,0.0); glrotatef(-20,0.0,0.0,1.0); Kolejność wykonywania operacji Aktywacja pracy na macierzy przekształcania obiektów. Ładowanie macierzy jednostkowej Mnożenie macierzy jednostkowej przez macierz przesunięcia o wektor (0.2,0.3,0.5). Skalowanie obiektu: 1.5 raza w kierunku osi x i y oraz 0.5 raza w kierunku osi z. Obrót wokół osi x przeciwnie do ruchu wskazówek zegara o 30 stopni. Obrót wokół osi y przeciwnie do ruchu wskazówek zegara o 45 stopni. Obrót wokół osi z zgodnie z ruchem wskazówek zegara o 20 stopni.

39 Przykład #include <GL/glut.h> #include <stdlib.h> const GLdouble left = -10.0; const GLdouble right = 10.0; const GLdouble bottom = -10.0; const GLdouble top = 10.0; const GLdouble near_ = 50.0; const GLdouble far_ = 70.0; GLfloat scale = 1.0; GLfloat rotatex = 0.0; GLfloat rotatey = 0.0; GLfloat translatex = 0.0; GLfloat translatey = 0.0; int main (int argc, char *argv[]) { glutinit (&argc,argv); glutinitdisplaymode (GLUT_DOUBLE GLUT_RGB); glutinitwindowsize (400,400); glutcreatewindow ("Przeksztalcenia"); glutdisplayfunc (Display); glutreshapefunc (Reshape); glutkeyboardfunc (Keyboard); glutspecialfunc (SpecialKeys); glutmainloop (); return 0;

40 void Display () { glclearcolor (1.0,1.0,1.0,1.0); glclear (GL_COLOR_BUFFER_BIT); glmatrixmode (GL_MODELVIEW); glloadidentity (); gltranslatef (0,0,-(near_+far_)/2); gltranslatef (translatex,translatey,0.0); glscalef (scale,scale,scale); glrotatef (rotatex,1.0,0,0); glrotatef (rotatey,0,1.0,0); glcolor3f (0.0,0.0,0.0); glutwiresphere (1.0,20,10); glflush(); glutswapbuffers ();

41 void Reshape (int w, int h) { if ( w < h ) { glviewport(0, (h-w)/2, w, w); else { glviewport((w-h)/2, 0, h, h); glmatrixmode (GL_PROJECTION); glloadidentity (); glfrustum (left,right,bottom,top,near_,far_); Display ();

42 void Keyboard (unsigned char key, int x, int y) { if (key == '+') scale += 0.1; if (key == '-' && scale > 0.1) scale -= 0.1; if (key=='s') translatey -= 0.5; if (key=='w') translatey += 0.5; if (key=='a') translatex -= 0.5; if (key=='d') translatex += 0.5; Reshape (glutget (GLUT_WINDOW_WIDTH),glutGet (GLUT_WINDOW_HEIGHT)); void SpecialKeys (int key, int x, int y) { switch (key) { case GLUT_KEY_LEFT: rotatey -= 1; break; case GLUT_KEY_UP: rotatex -= 1; break; case GLUT_KEY_RIGHT: rotatey += 1; break; case GLUT_KEY_DOWN: rotatex += 1; break; Reshape (glutget (GLUT_WINDOW_WIDTH),glutGet (GLUT_WINDOW_HEIGHT));

43 Gotowe obiekty 3D z biblioteki GLUT Kula void glutwiresphere (GLdouble radius, GLint slices, GLint stacks) radius - promien kuli, slices - ilosc południków, stacks - ilosc równolezników. Sześcian void glutwirecube (GLdouble size) size długość boku

44 Gotowe obiekty 3D z biblioteki GLUT cd Stożek void glutwirecone (GLdouble base, GLdouble height, GLint slices, GLint stacks) base - promien podstawy stozka, height - wysokosc stozka, slices - ilosc tworzacych, stacks - ilosc południków Torus void glutwiretorus (GLdouble innerradius, GLdouble outerradius, GLint sides, GLint rings) innerradius - promien koła tworzacego torus, outerradius - promien torusa, sides - ilosc scian bocznych, z których składa sie pojedynczy walec, rings - ilosc walców, z których składa sie torus

45 Gotowe obiekty 3D z biblioteki GLUT cd. Dwunastościan void glutwiredodecahedron (void) Czajnik void glutwireteapot (GLdouble size) size wielkość Ośmiościan void glutwireoctahedron (void) Czworościan void glutwiretetrahedron (void) Dwudziestoscian void glutwireicosahedron (void)

46 Stos macierzy Można zapamiętać aktualny stan macierzy zapisując ją na stosie. Operacje odłożenia bieżącej macierzy na stos: void glpushmatrix (void) Operacje zdjęcia macierzy ze stosu: void glpopmatrix (void)

47 Przykład Trzy czajniki ustawione obok siebie obrócone o różne kąty glpushmatrix(); gltranslatef(-2,0,0); glrotatef(45,1,0,0); glutwireteapot(0.8); glpopmatrix(); glpushmatrix(); gltranslatef(0,0,0); glrotatef(45,0,0,1); glutwireteapot(0.8); glpopmatrix(); glpushmatrix(); gltranslatef(2,0,0); glrotatef(45,0,1,0); glutwireteapot(0.8); glpopmatrix();

48 Przykład 2 Poprzedni przykład bez korzystania ze stosu macierzy gltranslatef(-2,0,0); glrotatef(45,1,0,0); glutwireteapot(0.8); gltranslatef(0,0,0); glrotatef(45,0,0,1); glutwireteapot(0.8); gltranslatef(2,0,0); glrotatef(45,0,1,0); glutwireteapot(0.8);

49 Primitywy Definiowanie współrzędnych wierzchołków figur podstawowych musi zawierać się pomiędzy wywołaniami funkcji: void glbegin (GLenum mode) void glend (void) Gdzie parametr mode okresla rodzaj prymitywu.

50 Rodzaje prymitywów

51 Definiowane współrzędnych wierzchołków void glvertex2d (GLdouble x, GLdouble y) void glvertex2f (GLfloat x, GLfloat y) void glvertex2i (GLint x, GLint y) void glvertex2s (GLshort x, GLshort y) void glvertex2dv (const GLdouble *v) void glvertex2fv (const GLfloat *v) void glvertex2iv (const GLint *v) void glvertex2sv (const GLshort *v) void glvertex3d (GLdouble x, GLdouble y, GLdouble z) void glvertex3f (GLfloat x, GLfloat y, GLfloat z) void glvertex3i (GLint x, GLint y, GLint z) void glvertex3s (GLshort x, GLshort y, GLshort z) void glvertex3dv (const GLdouble *v) void glvertex3fv (const GLfloat *v) void glvertex3iv (const GLint *v) void glvertex3sv (const GLshort *v)

52 Prostokąty Prostokąt rysowany jest na płaszczyźnie o równaniu Z=0, a jego boki są równoległe do osi układu współrzędnych. void glrectd (GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2) void glrectf (GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2) void glrecti (GLint x1, GLint y1, GLint x2, GLint y2) void glrects (GLshort x1, GLshort y1, GLshort x2, GLshort y2) void glrectdv (const GLdouble *v1, const GLdouble *v2) void glrectfv (const GLfloat *v1, const GLfloat *v2 ) void glrectiv (const GLint *v1, const GLint *v2) void glrectsv (const GLshort *v1, const GLshort *v2)

53 Punkty Rozmiar pojedynczego punktu void glpointsize (GLfloat size) size określa średnice punktu i jego wartość musi być większa od 0.

54 Linie Grubość (szerokość) linii void gllinewidth (GLfloat width) Parametr określa grubość linii i musi być większy od 0. Określenie wzoru jakim będzie rysowana linia void gllinestipple (GLint factor, GLushort pattern) pattern to 16-bitowa liczba całkowita zawierajaca wzór rysowanej linii factor określa zwielokrotnienie bitów wzoru. Włączenie mechanizmu rysowania linii ze wzorem wymaga wywołania funkcji glenable z parametrem GL_LINE_STIPPLE. glenable(gl_line_stipple); Wyłączenie mechanizmu rysowania linii ze wzorem wymaga wywołania funkcji gldisable(gl_line_stipple);

55 Timer Obsługa timera systemowego void gluttimerfunc(unsigned int milis, void(*func)(intvalue), value) Obsługa bezczynności void glutidlefunc(void(*func)(void))

Janusz Ganczarski. OpenGL Definiowanie sceny 3D

Janusz Ganczarski. OpenGL Definiowanie sceny 3D Janusz Ganczarski OpenGL Definiowanie sceny 3D Spis treści Spis treści..................................... 1 1. Definiowanie sceny 3D........................... 1 1.1. Obszar renderingu............................

Bardziej szczegółowo

Rzutowanie DOROTA SMORAWA

Rzutowanie DOROTA SMORAWA Rzutowanie DOROTA SMORAWA Rzutowanie Rzutowanie jest operacja polegająca na tym, aby odpowiednie piksele na płaskim ekranie były wyświetlane w taki sposób, by sprawiać wrażenie trójwymiarowej głębi (przestrzeni

Bardziej szczegółowo

1 Wstęp teoretyczny. Temat: Manipulowanie przestrzenią. Grafika komputerowa 3D. Instrukcja laboratoryjna Układ współrzędnych

1 Wstęp teoretyczny. Temat: Manipulowanie przestrzenią. Grafika komputerowa 3D. Instrukcja laboratoryjna Układ współrzędnych Instrukcja laboratoryjna 9 Grafika komputerowa 3D Temat: Manipulowanie przestrzenią Przygotował: dr inż. Grzegorz Łukawski, mgr inż. Maciej Lasota, mgr inż. Tomasz Michno 1 Wstęp teoretyczny 1.1 Układ

Bardziej szczegółowo

Bufor koloru cd. Czyszczenie bufora koloru glclearcolor( )

Bufor koloru cd. Czyszczenie bufora koloru glclearcolor( ) Wizualizacje 3D Bufor koloru Bufor koloru służy do przechowywania obrazu renderowanej sceny 3D. Typowo OpenGL stosuje dwa bufory koloru: przedni i tylny. Bieżąca scena znajduje się w przednim buforze i

Bardziej szczegółowo

OPENGL PRZEKSZTAŁCENIA GEOMETRYCZNE

OPENGL PRZEKSZTAŁCENIA GEOMETRYCZNE OPENGL PRZEKSZTAŁCENIA GEOMETRYCZNE SPIS TREŚCI 1. Przekształcenia geometryczne... 3 1.1. Obrót... 3 1.2. Skalowanie... 3 1.3. Przesunięcie... 3 1.4. Mnożenie macierzy... 4 1.5. Ładowanie macierzy... 4

Bardziej szczegółowo

Wprowadzenie do programowania z wykorzystaniem biblioteki OpenGL. Dorota Smorawa

Wprowadzenie do programowania z wykorzystaniem biblioteki OpenGL. Dorota Smorawa Wprowadzenie do programowania z wykorzystaniem biblioteki OpenGL Dorota Smorawa Pierwszy program Pierwszy program będzie składał się z trzech etapów: Funkcji rysującej scenę 3D, Inicjacji okna renderingu,

Bardziej szczegółowo

2 Przygotował: mgr inż. Maciej Lasota

2 Przygotował: mgr inż. Maciej Lasota Laboratorium nr 2 1/6 Grafika Komputerowa 3D Instrukcja laboratoryjna Temat: Manipulowanie przestrzenią 2 Przygotował: mgr inż. Maciej Lasota 1) Manipulowanie przestrzenią Istnieją dwa typy układów współrzędnych:

Bardziej szczegółowo

Janusz Ganczarski. OpenGL Pierwszy program

Janusz Ganczarski. OpenGL Pierwszy program Janusz Ganczarski OpenGL Pierwszy program Spis treści Spis treści..................................... 1 1. Pierwszy program.............................. 1 1.1. Rysowanie sceny 3D...........................

Bardziej szczegółowo

Temat: Transformacje 3D

Temat: Transformacje 3D Instrukcja laboratoryjna 11 Grafika komputerowa 3D Temat: Transformacje 3D Przygotował: dr inż. Grzegorz Łukawski, mgr inż. Maciej Lasota, mgr inż. Tomasz Michno 1 Wstęp teoretyczny Bardzo często programując

Bardziej szczegółowo

Temat: Wprowadzenie do OpenGL i GLUT

Temat: Wprowadzenie do OpenGL i GLUT Instrukcja laboratoryjna 8 Grafika komputerowa 3D Temat: Wprowadzenie do OpenGL i GLUT Przygotował: dr inż. Grzegorz Łukawski, mgr inż. Maciej Lasota, mgr inż. Tomasz Michno 1 Wstęp teoretyczny OpenGL

Bardziej szczegółowo

Przekształcenia geometryczne. Dorota Smorawa

Przekształcenia geometryczne. Dorota Smorawa Przekształcenia geometryczne Dorota Smorawa Przekształcenia geometryczne Na poprzednich laboratoriach już dowiedzieliśmy się, na czym polegają podstawowe przekształcenia geometryczne. Trzy podstawowe przekształcenia

Bardziej szczegółowo

Grafika 3D OpenGL część II

Grafika 3D OpenGL część II #include #include #include float kat=0.0f; void renderujscene(void) { glclearcolor(1.0f,1.0f,1.0f,1.0f); glclear(gl_color_buffer_bit); glpushmatrix(); glrotatef(kat,0,0,1);

Bardziej szczegółowo

Oprogramowanie i wykorzystanie stacji roboczych. Wykład 6

Oprogramowanie i wykorzystanie stacji roboczych. Wykład 6 Wykład 6 p. 1/2 Oprogramowanie i wykorzystanie stacji roboczych Wykład 6 Dr inż. Tomasz Olas olas@icis.pcz.pl Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska Wektory normalne

Bardziej szczegółowo

Grafika komputerowa INSTRUKCJA DO LABORATORIUM 2: operacje przestrzenne oraz obsługa klawiatury i myszki

Grafika komputerowa INSTRUKCJA DO LABORATORIUM 2: operacje przestrzenne oraz obsługa klawiatury i myszki Grafika komputerowa INSTRUKCJA DO LABORATORIUM 2: operacje przestrzenne oraz obsługa klawiatury i myszki Strona 1 z 9 C E L Ć W I C Z E N I A Celem ćwiczenia jest zapoznanie się z podstawowymi operacjami

Bardziej szczegółowo

Grafika komputerowa Wstęp do OpenGL

Grafika komputerowa Wstęp do OpenGL Instytut Informatyki Politechniki Warszawskiej Grafika komputerowa Wstęp do OpenGL Zbigniew Szymański z.szymanski@ii.pw.edu.pl listopad 2008 - v1 Prowadzący zajęcia: Sprawy organizacyjne /1/ Zbigniew Szymański

Bardziej szczegółowo

Grafika komputerowa Wstęp do OpenGL

Grafika komputerowa Wstęp do OpenGL Instytut Informatyki Politechniki Warszawskiej Grafika komputerowa Wstęp do OpenGL Zbigniew Szymański z.szymanski@ii.pw.edu.pl listopad 2008 - v1 listopad 2010 - v1d kwiecień 2013 v1e Prowadzący zajęcia:

Bardziej szczegółowo

GRAFIKA CZASU RZECZYWISTEGO Wprowadzenie do OpenGL

GRAFIKA CZASU RZECZYWISTEGO Wprowadzenie do OpenGL GRAFIKA CZASU RZECZYWISTEGO Wprowadzenie do OpenGL Grafika komputerowa i wizualizacja, Bioinformatyka S1, II Rok OpenGL Open Graphics Library Jest to API pozwalające na renderowanie grafiki w czasie rzeczywistym,

Bardziej szczegółowo

Wizualizacja 3D. dr inż. Marcin Gabryel

Wizualizacja 3D. dr inż. Marcin Gabryel Wizualizacja 3D dr inż. Marcin Gabryel Modele braw CMYK (Cyan, Magenta, Yellow, black) RGB (Red, Green, Blue) HSV (Hue, Saturation, Value) RGB Model polega na sumowaniu sygnałów w poszczególnych kanałach.

Bardziej szczegółowo

Elementarne obiekty geometryczne, bufory. Dorota Smorawa

Elementarne obiekty geometryczne, bufory. Dorota Smorawa Elementarne obiekty geometryczne, bufory Dorota Smorawa Elementarne obiekty Tworząc scenę 3D, od najprostszej, po najbardziej skomplikowaną, używamy obiektów złożonych, przede wszystkim podstawowych, elementarnych

Bardziej szczegółowo

Laboratorium 1. Część I. Podstawy biblioteki graficznej OpenGL.

Laboratorium 1. Część I. Podstawy biblioteki graficznej OpenGL. Laboratorium 1 Część I Podstawy biblioteki graficznej OpenGL. I. Konfiguracja środowiska 1. Ściągamy bibliotekę freeglut i rozpakujemy do głównego folderu dysku systemowego np. C:\freeglut 2. Uruchamiamy

Bardziej szczegółowo

OpenGL - maszyna stanu. Oprogramowanie i wykorzystanie stacji roboczych. Wykład 7. Grupy atrybutów. Zmienne stanu.

OpenGL - maszyna stanu. Oprogramowanie i wykorzystanie stacji roboczych. Wykład 7. Grupy atrybutów. Zmienne stanu. OpenGL - maszyna stanu Oprogramowanie i wykorzystanie stacji roboczych Wykład 7 Dr inż. Tomasz Olas olas@icis.pcz.pl Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska OpenGL posiada

Bardziej szczegółowo

Oprogramowanie i wykorzystanie stacji roboczych. Wykład 5

Oprogramowanie i wykorzystanie stacji roboczych. Wykład 5 Wykład 5 p. 1/? Oprogramowanie i wykorzystanie stacji roboczych Wykład 5 Dr inż. Tomasz Olas olas@icis.pcz.pl Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska Wykład 5 p. 2/? Co

Bardziej szczegółowo

Wykład 12. Wprowadzenie do malarstwa, str. 1 OpenGL Open Graphics Library. OpenGL składa się z

Wykład 12. Wprowadzenie do malarstwa, str. 1 OpenGL Open Graphics Library. OpenGL składa się z Wykład 12. Wprowadzenie do malarstwa, str. 1 OpenGL Open Graphics Library OpenGL składa się z teoretycznego modelu grafiki 3D, zestawu typów i funkcji obsługujących różne cechy tego modelu. Funkcje OpenGL

Bardziej szczegółowo

Co to jest OpenGL? Oprogramowanie i wykorzystanie stacji roboczych. Wykład 5. OpenGL - Achitektura. OpenGL - zalety. olas@icis.pcz.

Co to jest OpenGL? Oprogramowanie i wykorzystanie stacji roboczych. Wykład 5. OpenGL - Achitektura. OpenGL - zalety. olas@icis.pcz. Co to jest OpenGL? Oprogramowanie i wykorzystanie stacji roboczych Wykład 5 Dr inż. Tomasz Olas olas@icis.pcz.pl OpenGL (Open Graphics Library) jest niskopoziomowa biblioteka graficzna (API - programowy

Bardziej szczegółowo

glwindowpos2d void DrawString (GLint x, GLint y, char *string) { glwindowpos2i (x,y); int len = strlen (string); for (int i = 0; i < len; i++)

glwindowpos2d void DrawString (GLint x, GLint y, char *string) { glwindowpos2i (x,y); int len = strlen (string); for (int i = 0; i < len; i++) Wizualizacja 3D glwindowpos2d Funkcja wprowadzona w wersji 1.4 biblioteki OpenGL Funkcja pozwala na ustawienie rastra względem okna, a nie względem macierzy modelu Stosowana podczas pisania tekstów, np.:

Bardziej szczegółowo

Wykład 12. Wprowadzenie do malarstwa, str. 1 OpenGL Open Graphics Library. OpenGL składa się z

Wykład 12. Wprowadzenie do malarstwa, str. 1 OpenGL Open Graphics Library. OpenGL składa się z Wykład 12. Wprowadzenie do malarstwa, str. 1 OpenGL Open Graphics Library OpenGL składa się z teoretycznego modelu grafiki 3D, zestawu typów i funkcji obsługujących różne cechy tego modelu. WjęzykuC: pliki

Bardziej szczegółowo

System graficzny. Potok graficzny 3D. Scena 3D Zbiór trójwymiarowych danych wejściowych wykorzystywanych do wygenerowania obrazu wyjściowego 2D.

System graficzny. Potok graficzny 3D. Scena 3D Zbiór trójwymiarowych danych wejściowych wykorzystywanych do wygenerowania obrazu wyjściowego 2D. System graficzny scena 3D algorytm graficzny obraz 2D Potok graficzny 3D Radosław Mantiuk Dane wejściowe Algorytm tworzący obraz wyjściowy na podstawie sceny 3D Dane wyjściowe Wydział Informatyki Zachodniopomorski

Bardziej szczegółowo

Studium podyplomowe. Programowanie w OpenGL. Michał Turek, AGH Kraków

Studium podyplomowe. Programowanie w OpenGL. Michał Turek, AGH Kraków Studium podyplomowe Programowanie w OpenGL Michał Turek, AGH Kraków Charakterystyka (I) OpenGL - (Open Graphics Library) Graficzna biblioteka 2D/3D Liczne porty biblioteki, w tym takŝe akcelerowane sprzętowo

Bardziej szczegółowo

3 Przygotował: mgr inż. Maciej Lasota

3 Przygotował: mgr inż. Maciej Lasota Laboratorium nr 3 1/5 Grafika Komputerowa 3D Instrukcja laboratoryjna Temat: Rysowanie prymitywów 3 Przygotował: mgr inż. Maciej Lasota 1) Rysowanie prymitywów Podstawową rodziną funkcji wykorzystywanych

Bardziej szczegółowo

Wprowadzenie do klas w C++ oraz biblioteki opengl

Wprowadzenie do klas w C++ oraz biblioteki opengl Wprowadzenie do klas w C++ oraz biblioteki opengl 1. Bibliotek opengl. W celu rozpoczęcia pracy z użyciem biblioteki opengl należy pobrać pliki archiwum glut- 3.7.6.zip ze strony: http://www.opengl.org/resources/libraries/glut/glut_downloads.php

Bardziej szczegółowo

Zatem standardowe rysowanie prymitywów wygląda następująco:

Zatem standardowe rysowanie prymitywów wygląda następująco: Instrukcja laboratoryjna 10 Grafika komputerowa 3D Temat: Prymitywy Przygotował: dr inż. Grzegorz Łukawski, mgr inż. Maciej Lasota, mgr inż. Tomasz Michno 1 Wstęp teoretyczny Prymitywy proste figury geometryczne,

Bardziej szczegółowo

Trójwymiarowa grafika komputerowa rzutowanie

Trójwymiarowa grafika komputerowa rzutowanie Trójwymiarowa grafika komputerowa rzutowanie Mirosław Głowacki Wydział Inżynierii Metali i Informatyki Przemysłowej Rzutowanie w przestrzeni 3D etapy procesu rzutowania określenie rodzaju rzutu określenie

Bardziej szczegółowo

Grafika Komputerowa, Informatyka, I Rok

Grafika Komputerowa, Informatyka, I Rok SYNTEZA GRAFIKI 3D Grafika realistyczna i czasu rzeczywistego. Wstęp do programowania grafiki 3D z użyciem OpenGL. Transformacje geometryczne. Grafika Komputerowa, Informatyka, I Rok Synteza grafiki 3D

Bardziej szczegółowo

OpenGL transformacje przestrzenne

OpenGL transformacje przestrzenne OpenGL trnsformcje przestrzenne Kżdy zdefiniowny obiekt sceny, znim pojwi się n ekrnie monitor, poddwny jest trzem podstwowym trnsformcjom: Obserwcji Modelowni Projekcji Projekcj określ frgment przestrzeni,

Bardziej szczegółowo

Grafika Komputerowa Wykład 4. Synteza grafiki 3D. mgr inż. Michał Chwesiuk 1/30

Grafika Komputerowa Wykład 4. Synteza grafiki 3D. mgr inż. Michał Chwesiuk 1/30 Wykład 4 mgr inż. 1/30 Synteza grafiki polega na stworzeniu obrazu w oparciu o jego opis. Synteza obrazu w grafice komputerowej polega na wykorzystaniu algorytmów komputerowych do uzyskania obrazu cyfrowego

Bardziej szczegółowo

OpenGL - charakterystyka

OpenGL - charakterystyka OpenGL - charakterystyka OpenGL jest interfejsem programowym aplikacji zestawem funkcji umożliwiających tworzenie interaktywnej grafiki 3D. Program oparty na OpenGL musi być pisany z zastosowaniem języka

Bardziej szczegółowo

Bartosz Bazyluk Wprowadzenie Organizacja i tematyka zajęć, warunki zaliczenia.

Bartosz Bazyluk Wprowadzenie Organizacja i tematyka zajęć, warunki zaliczenia. Wprowadzenie Organizacja i tematyka zajęć, warunki zaliczenia http://bazyluk.net/dydaktyka Grafika Komputerowa i Wizualizacja, Informatyka S1, II Rok O MNIE mgr inż. Pokój 322/WI2 lub 316/WI2 bbazyluk@wi.zut.edu.pl

Bardziej szczegółowo

Zadanie 1. Ściana. 1. Potrzebne zmienne w dołączonym do zadania kodzie źródłowym

Zadanie 1. Ściana. 1. Potrzebne zmienne w dołączonym do zadania kodzie źródłowym Zadanie 1. Ściana Zadanie W pliku walls.cpp znajduje się funkcja void draw_back_wall(). Należy uzupełnić ją, ustawiając odpowiednio parametry teksturowania tak, aby na ścianę, która w pierwotnej wersji

Bardziej szczegółowo

OpenGL teksturowanie

OpenGL teksturowanie OpenGL teksturowanie Teksturowanie polega na pokrywaniu wielokątów obrazami (plikami graficznymi) Umożliwia znaczące zwiększenie realizmu sceny przy niewielkim zwiększeniu nakładu obliczeniowego Rozwój

Bardziej szczegółowo

Programowanie OpenGL

Programowanie OpenGL Programowanie OpenGL Uniwersytet Marii Curie-Skłodowskiej Wydział Matematyki, Fizyki i Informatyki Instytut Informatyki Programowanie OpenGL Rafał Stęgierski Lublin 2011 Instytut Informatyki UMCS Lublin

Bardziej szczegółowo

Wprowadzenie do rysowania w 3D. Praca w środowisku 3D

Wprowadzenie do rysowania w 3D. Praca w środowisku 3D Wprowadzenie do rysowania w 3D 13 Praca w środowisku 3D Pierwszym krokiem niezbędnym do rozpoczęcia pracy w środowisku 3D programu AutoCad 2010 jest wybór odpowiedniego obszaru roboczego. Można tego dokonać

Bardziej szczegółowo

Ćwiczenie nr 1 Szkielet aplikacji wykorzystującej bibliotekę OpenGL dla środowiska Windows z wykorzystaniem Visual C++

Ćwiczenie nr 1 Szkielet aplikacji wykorzystującej bibliotekę OpenGL dla środowiska Windows z wykorzystaniem Visual C++ Terminy oddawania ćwiczeń: Ćwiczenie nr 1 Szkielet aplikacji wykorzystującej bibliotekę OpenGL dla środowiska Windows z wykorzystaniem Visual C++ Podstawowe zasady: Wszystkie wątki wykorzystują jeden OpenGL

Bardziej szczegółowo

Programowanie Równoległe wykład, 21.01.2013. CUDA, przykłady praktyczne 1. Maciej Matyka Instytut Fizyki Teoretycznej

Programowanie Równoległe wykład, 21.01.2013. CUDA, przykłady praktyczne 1. Maciej Matyka Instytut Fizyki Teoretycznej Programowanie Równoległe wykład, 21.01.2013 CUDA, przykłady praktyczne 1 Maciej Matyka Instytut Fizyki Teoretycznej Motywacja l CPU vs GPU (anims) Plan CUDA w praktyce Wykład 1: CUDA w praktyce l aplikacja

Bardziej szczegółowo

OpenGL. Silicon Graphics (IRIS GL stacje graficzne)

OpenGL. Silicon Graphics (IRIS GL stacje graficzne) OpenGL. Silicon Graphics (IRIS GL stacje graficzne) Biblioteka -przestrzeń 3D -rzutowanie -prymitywy graficzne -operacje na barwach HISTORIA 1992 - powstaje wersja 1.0 specyfikacji OpenGL przenośnej między

Bardziej szczegółowo

OpenGL Zaawansowana grafika komputerowa

OpenGL Zaawansowana grafika komputerowa p. 1/63 OpenGL Zaawansowana grafika komputerowa p. 2/63 Czym jest OpenGL OpenGL można zdefiniować jako "programowy interfejs sprzętu graficznego". Jest to biblioteka przeznaczona do tworzenia trójwymiarowej

Bardziej szczegółowo

Efekt lustra 3D w OpenGL z wykorzystaniem bufora szablonowego (stencil buffer)

Efekt lustra 3D w OpenGL z wykorzystaniem bufora szablonowego (stencil buffer) Efekt lustra 3D w OpenGL z wykorzystaniem bufora szablonowego (stencil buffer) Autor: Radosław Płoszajczak Spis treści I. Wstęp...2 II. Metoda rysująca przeźroczystą szybę...2 III. Bufor szablonowy (stencil

Bardziej szczegółowo

Laboratorium Programowanie urządzeń mobilnych

Laboratorium Programowanie urządzeń mobilnych Laboratorium Programowanie urządzeń mobilnych Wprowadzenie Klasa Transform - Umożliwia realizację różnych zmian obiektu. Obiekt może zostać przesunięty, może być zmieniony jego rozmiar lub obrócony. Klasa

Bardziej szczegółowo

8 Przygotował: mgr inż. Maciej Lasota

8 Przygotował: mgr inż. Maciej Lasota Laboratorium nr 8 1/6 Grafika Komputerowa Instrukcja laboratoryjna Temat: Listy wyświetlania i tablice wierzchołków 8 Przygotował: mgr inż. Maciej Lasota 1) Listy wyświetlania Listy wyświetlania (ang.

Bardziej szczegółowo

Bartosz Bazyluk Wprowadzenie Organizacja i tematyka zajęć, warunki zaliczenia.

Bartosz Bazyluk Wprowadzenie Organizacja i tematyka zajęć, warunki zaliczenia. Wprowadzenie Organizacja i tematyka zajęć, warunki zaliczenia http://bazyluk.net/dydaktyka Gry komputerowe, Informatyka N1, III Rok, 2018 r. O MNIE dr inż. bbazyluk@wi.zut.edu.pl http://bazyluk.net/dydaktyka

Bardziej szczegółowo

GRAFIKA KOMPUTEROWA 7: Kolory i cieniowanie

GRAFIKA KOMPUTEROWA 7: Kolory i cieniowanie GRAFIKA KOMPUTEROWA 7: Kolory i cieniowanie http://galaxy.agh.edu.pl/~mhojny Prowadzący: dr inż. Hojny Marcin Akademia Górniczo-Hutnicza Mickiewicza 30 30-059 Krakow pawilon B5/p.406 tel. (+48)12 617 46

Bardziej szczegółowo

Grafika komputerowa. OpenGL. Podstawy

Grafika komputerowa. OpenGL. Podstawy Grafika komputerowa OpenGL Podstawy Czym jest OpenGL? "Programowy interfejs sprzętu graficznego" Biblioteka zawierająca zbiór procedur ułatwiających rysowanie grafiki dwu i trójwymiarowej. OpenGL nie jest,

Bardziej szczegółowo

Ćwiczenia nr 4. TEMATYKA: Rzutowanie

Ćwiczenia nr 4. TEMATYKA: Rzutowanie TEMATYKA: Rzutowanie Ćwiczenia nr 4 DEFINICJE: Rzut na prostą: rzutem na prostą l (zwaną rzutnią) w kierunku rzutowania k (k l) nazywamy przekształcenie płaszczyzny przyporządkowujące: a) Punktom prostej

Bardziej szczegółowo

Programowanie OpenGL

Programowanie OpenGL Programowanie OpenGL Uniwersytet Marii Curie-Skłodowskiej Wydział Matematyki, Fizyki i Informatyki Instytut Informatyki Programowanie OpenGL Rafał Stęgierski Lublin 2011 Instytut Informatyki UMCS Lublin

Bardziej szczegółowo

Rysowanie punktów na powierzchni graficznej

Rysowanie punktów na powierzchni graficznej Rysowanie punktów na powierzchni graficznej Tworzenie biblioteki rozpoczniemy od podstawowej funkcji graficznej gfxplot() - rysowania pojedynczego punktu na zadanych współrzędnych i o zadanym kolorze RGB.

Bardziej szczegółowo

GEOMETRIA PRZESTRZENNA (STEREOMETRIA)

GEOMETRIA PRZESTRZENNA (STEREOMETRIA) GEOMETRIA PRZESTRZENNA (STEREOMETRIA) WZAJEMNE POŁOŻENIE PROSTYCH W PRZESTRZENI Stereometria jest działem geometrii, którego przedmiotem badań są bryły przestrzenne oraz ich właściwości. Na początek omówimy

Bardziej szczegółowo

Bartosz Bazyluk Wprowadzenie Organizacja i tematyka zajęć, warunki zaliczenia.

Bartosz Bazyluk Wprowadzenie Organizacja i tematyka zajęć, warunki zaliczenia. Wprowadzenie Organizacja i tematyka zajęć, warunki zaliczenia http://bazyluk.net/dydaktyka Gry komputerowe, Informatyka S1, II Rok, 2018 r. O MNIE dr inż. bbazyluk@wi.zut.edu.pl http://bazyluk.net/dydaktyka

Bardziej szczegółowo

BRYŁY PODSTAWOWE I OBIEKTY ELEMENTARNE

BRYŁY PODSTAWOWE I OBIEKTY ELEMENTARNE Przemysław KLOC, Krzysztof KUBISTA BRYŁY PODSTAWOWE I OBIEKTY ELEMENTARNE Streszczenie: Niniejszy rozdział dotyczy wykorzystania brył podstawowych i obiektów elementarnych podczas modelowania 3D. Napisany

Bardziej szczegółowo

Wykład 10. Wprowadzene do malarstwa, str. 1 OpenGL Open Graphics Library. OpenGL składa się z

Wykład 10. Wprowadzene do malarstwa, str. 1 OpenGL Open Graphics Library. OpenGL składa się z Wykład 10. Wprowadzene do malarstwa, str. 1 OpenGL Open Graphics Library OpenGL składa się z teoretycznego modelu grafiki 3D, zestawu typów i funkcji obsługujących różne cechy tego modelu. Funkcje OpenGL

Bardziej szczegółowo

Rozdział 8 Wzory na macierze OpenGL

Rozdział 8 Wzory na macierze OpenGL Rozdział 8 Wzory na macierze OpenGL Jacek Matulewski, wersja 2014-03-07 Dodać YawPitchRoll???? 8->7 Dalszy rozwój aplikacji w trybie rdzennym nie jest już możliwy bez zaimplementowania operacji na macierzach.

Bardziej szczegółowo

Światła i rodzaje świateł. Dorota Smorawa

Światła i rodzaje świateł. Dorota Smorawa Światła i rodzaje świateł Dorota Smorawa Rodzaje świateł Biblioteka OpenGL posiada trzy podstawowe rodzaje świateł: światło otoczenia, światło rozproszone oraz światło odbite. Dodając oświetlenie na scenie

Bardziej szczegółowo

GRAFIKA CZASU RZECZYWISTEGO Wstęp do programowania grafiki czasu rzeczywistego.

GRAFIKA CZASU RZECZYWISTEGO Wstęp do programowania grafiki czasu rzeczywistego. GRAFIKA CZASU RZECZYWISTEGO Wstęp do programowania grafiki czasu rzeczywistego. http://bazyluk.net/zpsb Grafika Komputerowa, Informatyka, I Rok PROGRAMOWANIE GRAFIKI KOMPUTEROWEJ CZASU RZECZYWISTEGO Grafika

Bardziej szczegółowo

OpenGL. Biblioteka procedur graficznych. GLU = OpenGL Utility Library. GLX = OpenGL Extension to the X Window System [tm]

OpenGL. Biblioteka procedur graficznych. GLU = OpenGL Utility Library. GLX = OpenGL Extension to the X Window System [tm] OpenGL http://www.opengl.org/documentation/red_book/ http://www.gamedev.net/download/redbook.pdf Biblioteka procedur graficnch środowiko Klient Serwer aplikacja = klient erwer moŝe bć na innm komputere

Bardziej szczegółowo

Transformacje obiektów 3D

Transformacje obiektów 3D Synteza i obróbka obrazu Transformacje obiektów 3D Opracowanie: dr inż. Grzegorz Szwoch Politechnika Gdańska Katedra Systemów Multimedialnych Lokalny układ współrzędnych Tworząc model obiektu, zapisujemy

Bardziej szczegółowo

Mieszanie kolorów. Dorota Smorawa

Mieszanie kolorów. Dorota Smorawa Mieszanie kolorów Dorota Smorawa Tworzenie efektu przezroczystości Biblioteka OpenGL umożliwia nam tworzenie bardzo ciekawych efektów związanych z przezroczystością i odbiciem. Aby zrealizować efekt przezroczystości

Bardziej szczegółowo

Laboratorium grafiki komputerowej i animacji. Ćwiczenie V - Biblioteka OpenGL - oświetlenie sceny

Laboratorium grafiki komputerowej i animacji. Ćwiczenie V - Biblioteka OpenGL - oświetlenie sceny Laboratorium grafiki komputerowej i animacji Ćwiczenie V - Biblioteka OpenGL - oświetlenie sceny Przygotowanie do ćwiczenia: 1. Zapoznać się ze zdefiniowanymi w OpenGL modelami światła i właściwości materiałów.

Bardziej szczegółowo

gdzie (4.20) (4.21) 4.3. Rzut równoległy

gdzie (4.20) (4.21) 4.3. Rzut równoległy 4.3. Rzut równoległy 75 gdzie (4.20) Punkt zbiegu, określony wzorami (4.19) (4.20), leży na prostej przechodzącej przez środek rzutowania i równoległej do wektora u. Zauważmy, że gdy wektor u jest równoległy

Bardziej szczegółowo

Matematyka z plusem dla szkoły ponadgimnazjalnej. ZAŁOŻENIA DO PLANU RALIZACJI MATERIAŁU NAUCZANIA MATEMATYKI W KLASIE III (zakres podstawowy)

Matematyka z plusem dla szkoły ponadgimnazjalnej. ZAŁOŻENIA DO PLANU RALIZACJI MATERIAŁU NAUCZANIA MATEMATYKI W KLASIE III (zakres podstawowy) Program nauczania: Matematyka z plusem, Liczba godzin nauki w tygodniu: 3 Planowana liczba godzin w ciągu roku: 72 ZAŁOŻENIA DO PLANU RALIZACJI MATERIAŁU NAUCZANIA MATEMATYKI W KLASIE III (zakres podstawowy)

Bardziej szczegółowo

6 Przygotował: mgr inż. Maciej Lasota

6 Przygotował: mgr inż. Maciej Lasota Laboratorium nr 6 1/7 Grafika Komputerowa 3D Instrukcja laboratoryjna Temat: Materiały i oświetlenie 6 Przygotował: mgr inż. Maciej Lasota 1) Wprowadzenie Specyfikacja biblioteki OpenGL rozróżnia trzy

Bardziej szczegółowo

Układy współrzędnych GUW, LUW Polecenie LUW

Układy współrzędnych GUW, LUW Polecenie LUW Układy współrzędnych GUW, LUW Polecenie LUW 1 Układy współrzędnych w AutoCAD Rysowanie i opis (2D) współrzędnych kartezjańskich: x, y współrzędnych biegunowych: r

Bardziej szczegółowo

STEREOMETRIA CZYLI GEOMETRIA W 3 WYMIARACH

STEREOMETRIA CZYLI GEOMETRIA W 3 WYMIARACH STEREOMETRIA CZYLI GEOMETRIA W 3 WYMIARACH Stereometria jest działem geometrii, którego przedmiotem badań są bryły przestrzenne oraz ich właściwości. WZAJEMNE POŁOŻENIE PROSTYCH W PRZESTRZENI 2 proste

Bardziej szczegółowo

Materiały. Dorota Smorawa

Materiały. Dorota Smorawa Materiały Dorota Smorawa Materiały Materiały, podobnie jak światła, opisywane są za pomocą trzech składowych. Opisują zdolności refleksyjno-emisyjne danej powierzchni. Do tworzenia materiału służy funkcja:

Bardziej szczegółowo

Wymagania na poszczególne oceny szkolne z. matematyki. dla uczniów klasy IIIa i IIIb. Gimnazjum im. Jana Pawła II w Mętowie. w roku szkolnym 2015/2016

Wymagania na poszczególne oceny szkolne z. matematyki. dla uczniów klasy IIIa i IIIb. Gimnazjum im. Jana Pawła II w Mętowie. w roku szkolnym 2015/2016 Wymagania na poszczególne oceny szkolne z matematyki dla uczniów klasy IIIa i IIIb Gimnazjum im. Jana Pawła II w Mętowie w roku szkolnym 2015/2016 DZIAŁ 1. FUNKCJE (11h) Uczeń: poda definicję funkcji (2)

Bardziej szczegółowo

OpenGL wprowadzenie. O.1 Informacje ogólne 286 O OPENGL WPROWADZENIE

OpenGL wprowadzenie. O.1 Informacje ogólne 286 O OPENGL WPROWADZENIE O OpenGL wprowadzenie O.1 Informacje ogólne Dawno, dawno temu firma Silicon Graphics opracowała dla produkowanego przez siebie sprzętu bibliotekę graficzną zwaną IRIS GL. Związany z nią interfejs programisty

Bardziej szczegółowo

Światło. W OpenGL można rozróżnić 3 rodzaje światła

Światło. W OpenGL można rozróżnić 3 rodzaje światła Wizualizacja 3D Światło W OpenGL można rozróżnić 3 rodzaje światła Światło otaczające (ambient light) równomiernie oświetla wszystkie elementy sceny, nie pochodzi z żadnego konkretnego kierunku Światło

Bardziej szczegółowo

GRAFIKA CZASU RZECZYWISTEGO Podstawy syntezy grafiki 3D i transformacji geometrycznych

GRAFIKA CZASU RZECZYWISTEGO Podstawy syntezy grafiki 3D i transformacji geometrycznych GRAFIKA CZASU RZECZYWISTEGO Podstawy syntezy grafiki 3D i transformacji geometrycznych Grafika komputerowa i wizualizacja, Bioinformatyka S1, II Rok Synteza grafiki 3D Pod pojęciem syntezy grafiki rozumiemy

Bardziej szczegółowo

Stereometria bryły. Wielościany. Wielościany foremne

Stereometria bryły. Wielościany. Wielościany foremne Stereometria bryły Stereometria - geometria przestrzeni trójwymiarowej. Przedmiotem jej badań są własności brył oraz przekształcenia izometryczne i afiniczne przestrzeni. Przyjęte oznaczenia: - Pole powierzchni

Bardziej szczegółowo

Grafika komputerowa. Potok graficzny 3D. Radosław Mantiuk. Wydział Informatyki Zachodniopomorski Uniwersytet Technologiczny

Grafika komputerowa. Potok graficzny 3D. Radosław Mantiuk. Wydział Informatyki Zachodniopomorski Uniwersytet Technologiczny Potok graficzny 3D Radosław Mantiuk Wydział Informatyki Zachodniopomorski Uniwersytet Technologiczny Eksperyment Rafal Piórkowski rpiorkowski@wi.zut.edu.pl System graficzny scena 3D algorytm graficzny

Bardziej szczegółowo

Laboratorium Grafiki Komputerowej i Animacji. Ćwiczenie VI. Biblioteka OpenGL - teksturowanie

Laboratorium Grafiki Komputerowej i Animacji. Ćwiczenie VI. Biblioteka OpenGL - teksturowanie Laboratorium Grafiki Komputerowej i Animacji Ćwiczenie VI Biblioteka OpenGL - teksturowanie Sławomir Samolej Rzeszów, 1999 1. Wstęp Podczas tworzenia skomplikowanych obiektów graficznych przydatnym mechanizmem

Bardziej szczegółowo

Przedmiotowe Zasady Oceniania

Przedmiotowe Zasady Oceniania Strona tytułowa Przedmiotowe Zasady Oceniania Matematyka Liceum podstawa Krzysztof Pietrasik Podręcznik: 1. Matematyka III 2. M. Dobrowolska, M. Karpiński, J. Lech 3. GWO Forma 1. Formy sprawdzania wiedzy

Bardziej szczegółowo

BLENDER- Laboratorium 1 opracował Michał Zakrzewski, 2014 r. Interfejs i poruszanie się po programie oraz podstawy edycji bryły

BLENDER- Laboratorium 1 opracował Michał Zakrzewski, 2014 r. Interfejs i poruszanie się po programie oraz podstawy edycji bryły BLENDER- Laboratorium 1 opracował Michał Zakrzewski, 2014 r. Interfejs i poruszanie się po programie oraz podstawy edycji bryły Po uruchomieniu programu Blender zawsze ukaże się nam oto taki widok: Jak

Bardziej szczegółowo

Wykład 4. Rendering (1) Informacje podstawowe

Wykład 4. Rendering (1) Informacje podstawowe Wykład 4. Rendering (1) Informacje podstawowe Z punktu widzenia dzisiejszego programowania gier: Direct3D jest najczęściej wykorzystywanym przez profesjonalnych deweloperów gier API graficznym na platformie

Bardziej szczegółowo

FIGURY I PRZEKSZTAŁCENIA GEOMETRYCZNE

FIGURY I PRZEKSZTAŁCENIA GEOMETRYCZNE Umiejętności opracowanie: Maria Lampert LISTA MOICH OSIĄGNIĘĆ FIGURY I PRZEKSZTAŁCENIA GEOMETRYCZNE Co powinienem umieć Umiejętności znam podstawowe przekształcenia geometryczne: symetria osiowa i środkowa,

Bardziej szczegółowo

Matematyka z plusem dla szkoły ponadgimnazjalnej. ZAŁOŻENIA DO PLANU RALIZACJI MATERIAŁU NAUCZANIA MATEMATYKI W KLASIE III (zakres podstawowy)

Matematyka z plusem dla szkoły ponadgimnazjalnej. ZAŁOŻENIA DO PLANU RALIZACJI MATERIAŁU NAUCZANIA MATEMATYKI W KLASIE III (zakres podstawowy) 1 ZAŁOŻENIA DO PLANU RALIZACJI MATERIAŁU NAUCZANIA MATEMATYKI W KLASIE III (zakres podstawowy) Program nauczania: Matematyka z plusem, numer dopuszczenia DKW-4015-37/01. Liczba godzin nauki w tygodniu:

Bardziej szczegółowo

1. Prymitywy graficzne

1. Prymitywy graficzne 1. Prymitywy graficzne Prymitywy graficzne są elementarnymi obiektami jakie potrafi bezpośrednio rysować, określony system graficzny (DirectX, OpenGL itp.) są to: punkty, listy linii, serie linii, listy

Bardziej szczegółowo

Pytania do spr / Własności figur (płaskich i przestrzennych) (waga: 0,5 lub 0,3)

Pytania do spr / Własności figur (płaskich i przestrzennych) (waga: 0,5 lub 0,3) Pytania zamknięte / TEST : Wybierz 1 odp prawidłową. 1. Punkt: A) jest aksjomatem in. pewnikiem; B) nie jest aksjomatem, bo można go zdefiniować. 2. Prosta: A) to zbiór punktów; B) to zbiór punktów współliniowych.

Bardziej szczegółowo

0. OpenGL ma układ współrzędnych taki, że oś y jest skierowana (względem monitora) a) w dół b) w górę c) w lewo d) w prawo e) w kierunku do

0. OpenGL ma układ współrzędnych taki, że oś y jest skierowana (względem monitora) a) w dół b) w górę c) w lewo d) w prawo e) w kierunku do 0. OpenGL ma układ współrzędnych taki, że oś y jest skierowana (względem monitora) a) w dół b) w górę c) w lewo d) w prawo e) w kierunku do obserwatora f) w kierunku od obserwatora 1. Obrót dookoła osi

Bardziej szczegółowo

MAZOWIECKI PROGRAM STYPENDIALNY DLA UCZNIÓW SZCZEGÓLNIE UZDOLNIONYCH NAJLEPSZA INWESTYCJA W CZŁOWIEKA 2016/2017

MAZOWIECKI PROGRAM STYPENDIALNY DLA UCZNIÓW SZCZEGÓLNIE UZDOLNIONYCH NAJLEPSZA INWESTYCJA W CZŁOWIEKA 2016/2017 MAZOWIECKI PROGRAM STYPENDIALNY DLA UCZNIÓW SZCZEGÓLNIE UZDOLNIONYCH NAJLEPSZA INWESTYCJA W CZŁOWIEKA 2016/2017 Nr z wniosku ID: 3313 Tytuł projektu edukacyjnego: Jakie bryły przestrzenne spotykamy na

Bardziej szczegółowo

ZAKRES PODSTAWOWY CZĘŚĆ II. Wyrażenia wymierne

ZAKRES PODSTAWOWY CZĘŚĆ II. Wyrażenia wymierne CZĘŚĆ II ZAKRES PODSTAWOWY Wyrażenia wymierne Temat: Wielomiany-przypomnienie i poszerzenie wiadomości. (2 godz.) znać i rozumieć pojęcie jednomianu (2) znać i rozumieć pojęcie wielomianu stopnia n (2)

Bardziej szczegółowo

Druga aplikacja Prymitywy, alpha blending, obracanie bitmap oraz mały zestaw przydatnych funkcji wyświetlających własnej roboty.

Druga aplikacja Prymitywy, alpha blending, obracanie bitmap oraz mały zestaw przydatnych funkcji wyświetlających własnej roboty. Przyszedł czas na rysowanie własnych figur, czyli prymitywy, obracanie bitmap, oraz alpha blending-czyli półprzezroczystość. Będę opisywał tylko rzeczy nowe-nie ma potrzeby abym się powtarzał. Zaczynajmny

Bardziej szczegółowo

MATEMATYKA KLASY III gimnazjum LICZBY I WYRAŻENIA ALGEBRAICZNE

MATEMATYKA KLASY III gimnazjum LICZBY I WYRAŻENIA ALGEBRAICZNE MATEMATYKA KLASY III gimnazjum LICZBY I WYRAŻENIA ALGEBRAICZNE - pojęcie liczby naturalnej, całkowitej, wymiernej, niewymiernej, - sposób i potrzebę zaokrąglania liczb, - pojęcie wartości bezwzględnej,

Bardziej szczegółowo

PLAN REALIZACJI MATERIAŁU NAUCZANIA MATEMATYKI W KLASIE III WRAZ Z PLANEM WYNIKOWYM (ZAKRES PODSTAWOWY)

PLAN REALIZACJI MATERIAŁU NAUCZANIA MATEMATYKI W KLASIE III WRAZ Z PLANEM WYNIKOWYM (ZAKRES PODSTAWOWY) PLAN REALIZACJI MATERIAŁU NAUCZANIA MATEMATYKI W KLASIE III WRAZ Z PLANEM WYNIKOWYM (ZAKRES PODSTAWOWY) Kategorie celów nauczania: A zapamiętanie wiadomości, B rozumienie wiadomości, C stosowanie wiadomości

Bardziej szczegółowo

GRK 2. dr Wojciech Palubicki

GRK 2. dr Wojciech Palubicki GRK dr Wojciech Palubicki Macierz wektor produkt jako Transformacja T: R n R m T Ԧx = A Ԧx Przemieszczanie wierzchołków - Transformacje Skalowanie Rotacja Translacja -y -y Macierz rotacji M wobec punktu

Bardziej szczegółowo

Symetria w fizyce materii

Symetria w fizyce materii Symetria w fizyce materii - Przekształcenia symetrii w dwóch i trzech wymiarach - Wprowadzenie w teorię grup; grupy symetrii - Wprowadzenie w teorię reprezentacji grup - Teoria grup a mechanika kwantowa

Bardziej szczegółowo

PLAN WYNIKOWY Z MATEMATYKI DLA III KL. GIMNAZJUM do podręcznika GWO Matematyka z plusem. PODSTAWOWE Uczeń zna: LICZBY I WYRAŻENIA ALGEBRAICZNE

PLAN WYNIKOWY Z MATEMATYKI DLA III KL. GIMNAZJUM do podręcznika GWO Matematyka z plusem. PODSTAWOWE Uczeń zna: LICZBY I WYRAŻENIA ALGEBRAICZNE Ewa Koralewska PLAN WYNIKOWY Z MATEMATYKI DLA III KL. GIMNAZJUM do podręcznika GWO Matematyka z plusem LP.. 2. 3. 5. OGÓLNA PODST- AWA PROGRA- MOWA a a TEMATYKA LEKCJI LICZBA GODZIN Lekcja organizacyjna.

Bardziej szczegółowo

Część 4 życie programu

Część 4 życie programu 1. Struktura programu c++ Ogólna struktura programu w C++ składa się z kilku części: część 1 część 2 część 3 część 4 #include int main(int argc, char *argv[]) /* instrukcje funkcji main */ Część

Bardziej szczegółowo

Grafika trójwymiarowa

Grafika trójwymiarowa Strona 1 Grafika 3D w systemie Android Wprowadzenie do OpenGL ES Podstawy rysowania Rzutowanie i kamera Klasa GLSurfaceView Algorytm rysowania Tekstury Strona 2 Grafika 3D w systemie Android W komputerach,

Bardziej szczegółowo

DZIAŁ 1. STATYSTYKA DZIAŁ 2. FUNKCJE

DZIAŁ 1. STATYSTYKA DZIAŁ 2. FUNKCJE DZIAŁ 1. STATYSTYKA poda pojęcie diagramu słupkowego i kołowego (2) poda pojęcie wykresu (2) poda potrzebę korzystania z różnych form prezentacji informacji (2) poda pojęcie średniej, mediany (2) obliczy

Bardziej szczegółowo

KGGiBM GRAFIKA INŻYNIERSKA Rok III, sem. VI, sem IV SN WILiŚ Rok akademicki 2011/2012

KGGiBM GRAFIKA INŻYNIERSKA Rok III, sem. VI, sem IV SN WILiŚ Rok akademicki 2011/2012 Rysowanie precyzyjne 7 W ćwiczeniu tym pokazane zostaną wybrane techniki bardzo dokładnego rysowania obiektów w programie AutoCAD 2012, między innymi wykorzystanie punktów charakterystycznych. Narysować

Bardziej szczegółowo

Szybkie tworzenie grafiki w GcIde

Szybkie tworzenie grafiki w GcIde Szybkie tworzenie grafiki w GcIde Opracował: Ryszard Olchawa Poniższy opis dotyczy aplikacji okienkowej w systemie Windows lub Linux bazującej na obiektowej bibliotece rofrm stworzonej w środowisku GcIde.

Bardziej szczegółowo

Z ostatniego wzoru i zależności (3.20) można obliczyć n6. Otrzymujemy (3.23) 3.5. Transformacje geometryczne

Z ostatniego wzoru i zależności (3.20) można obliczyć n6. Otrzymujemy (3.23) 3.5. Transformacje geometryczne 46 III. Przekształcenia w przestrzeni trójwymiarowej Z ostatniego wzoru i zależności (3.20) można obliczyć n6. Otrzymujemy (3.23) 3.5. Transformacje geometryczne Złożone obiekty trójwymiarowe można uważać,

Bardziej szczegółowo