OpenGL transformacje przestrzenne

Podobne dokumenty
Rzutowanie DOROTA SMORAWA

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

2 Przygotował: mgr inż. Maciej Lasota

Wspomaganie obliczeń za pomocą programu MathCad

Janusz Ganczarski. OpenGL Definiowanie sceny 3D

Temat: Transformacje 3D

WEKTORY skalary wektory W ogólnym przypadku, aby określić wektor, należy znać:

Oprogramowanie i wykorzystanie stacji roboczych. Wykład 6

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

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

WEKTORY skalary wektory W ogólnym przypadku, aby określić wektor, należy znać:

Translacja jako operacja symetrii. Wybór komórki elementarnej wg A. Bravais, połowa XIX wieku wybieramy komórkę. Symetria sieci translacyjnej

Analiza matematyczna i algebra liniowa

4. RACHUNEK WEKTOROWY

Wprowadzenie do programowania z wykorzystaniem biblioteki OpenGL. Dorota Smorawa

Model oświetlenia WYKŁAD 4. Adam Wojciechowski

WYKŁAD 5. Typy macierzy, działania na macierzach, macierz układu równań. Podstawowe wiadomości o macierzach

Układy równań liniowych Macierze rzadkie

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

Podstawy robotyki. Wykład II. Robert Muszyński Janusz Jakubiak Instytut Informatyki, Automatyki i Robotyki Politechnika Wrocławska

Macierz. Wyznacznik macierzy. Układ równań liniowych

Rozwiązania maj 2017r. Zadania zamknięte

Przekształcenia geometryczne. Dorota Smorawa

Wyrównanie sieci niwelacyjnej

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

Aby opisać strukturę krystaliczną, konieczne jest określenie jej części składowych: sieci przestrzennej oraz bazy atomowej.

Grafika rastrowa -ograniczenia GRAKO: PODSTAWY GRAFIKI 2W. Grafika rastrowa. Antyaliasing. Wizualizacja 2W. Spójność obiektów Obcinanie Transformacje

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

Obraz jako funkcja Przekształcenia geometryczne

Rozdział 8 Wzory na macierze OpenGL

Struktura kryształów. Kittel, rozdz. 1 (Uwaga błędna terminologia!) Ashcroft, Mermin, rozdz.

Modelowanie 3 D na podstawie fotografii amatorskich

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

Pochodne i całki, macierze i wyznaczniki

Metoda sił jest sposobem rozwiązywania układów statycznie niewyznaczalnych, czyli układów o nadliczbowych więzach (zewnętrznych i wewnętrznych).

Obrót wokół początku układu współrzędnych o kąt φ można wyrazić w postaci macierzowej następująco

Wykład 14. Elementy algebry macierzy

Przekształcenia liniowe

Przekształcenia geometryczne w grafice komputerowej. Marek Badura

Rozwiązywanie zadań z dynamicznego ruchu płaskiego część I 9

1 Temat: Vertex Shader

PODSTAWY RACHUNKU WEKTOROWEGO

Wykład 3: Transformata Fouriera

Układy równań liniowych Macierze rzadkie

Struktura energetyczna ciał stałych-cd. Fizyka II dla Elektroniki, lato

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

Programowanie obiektowe

2. ELEMENTY GEOMETRII ANALITYCZNEJ I WEKTOROWEJ

Klasa druga: II TK1, II TK2 Poziom podstawowy 3 godz. x 30 tyg.= 90 nr programu DKOS /07 I. Funkcja kwadratowa

Politechnika Gdańska Wydział Elektrotechniki i Automatyki Katedra Inżynierii Systemów Sterowania

Kodowanie liczb. Kodowanie stałopozycyjne liczb całkowitych. Niech liczba całkowita a ma w systemie dwójkowym postać: Kod prosty

Mobilne Aplikacje Multimedialne

2. FUNKCJE WYMIERNE Poziom (K) lub (P)

Opis ruchu obrotowego

Macierz. Wyznacznik macierzy. Układ równań liniowych

Ekstrakcja cech. PCA (Principal Component Analysis) Analiza składowych głównych. LDA (Linear Discriminant Analysis) Liniowa analiza dyskryminacyjna

Maciej Grzesiak. Iloczyn skalarny. 1. Iloczyn skalarny wektorów na płaszczyźnie i w przestrzeni. a b = a b cos ϕ. j) (b x. i + b y

Algebra macierzowa. Akademia Morska w Gdyni Katedra Automatyki Okrętowej Teoria sterowania. Mirosław Tomera 1. ELEMENTARNA TEORIA MACIERZOWA

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

Kompilacja javac prog.java powoduje wyprodukowanie kilku plików o rozszerzeniu.class, m.in. Main.class wykonanie: java Main

Wymagania kl. 2. Uczeń:

Jest błędem odwołanie się do zmiennej, której nie przypisano wcześniej żadnej wartości.

O RELACJACH MIĘDZY GRUPĄ OBROTÓW, A GRUPĄ PERMUTACJI

Sumy algebraiczne i funkcje wymierne

dr Mariusz Grządziel 15,29 kwietnia 2014 Przestrzeń R k R k = R R... R k razy Elementy R k wektory;

WYMAGANIA EDUKACYJNE Z MATEMATYKI W KLASIE IIc ZAKRES PODSTAWOWY I ROZSZERZONY

Oprogramowanie i wykorzystanie stacji roboczych. Wykład 5

PODSTAWY BAZ DANYCH Wykład 2 2. Pojęcie Relacyjnej Bazy Danych

Wprowadzenie do klas w C++ oraz biblioteki opengl

Wszystkim życzę Wesołych Świąt :-)

Transformacje obiektów 3D

rectan.co.uk 1. Szkic projektu Strona:1

1 Definicja całki oznaczonej

Elementarne obiekty geometryczne, bufory. Dorota Smorawa

Zegary. Zegary (timers) umożliwiają cykliczne w danych odstępach czasu wykonać określone operacje.

WYMAGANIA I KRYTERIA OCENIANIA Z MATEMATYKI W 3 LETNIM LICEUM OGÓLNOKSZTAŁCĄCYM

Orientacja zewnętrzna pojedynczego zdjęcia

Adaptacja slajdów do wykładów. Introduction to Robotics (ES159) Advanced Introduction to Robotics (ES259)

Laboratorium grafiki komputerowej i animacji. Ćwiczenie IV - Biblioteka OpenGL - transformacje przestrzenne obiektów

CAŁKOWANIE NUMERYCZNE

Pierwiastek z liczby zespolonej

Krystalochemia białek 2016/2017

Wektory i macierze w OpenGL

i = [ 0] j = [ 1] k = [ 0]

Wymagania edukacyjne matematyka klasa 2 zakres podstawowy 1. SUMY ALGEBRAICZNE

Podstawy programowania w języku C

usuwa niewymierność z mianownika wyrażenia typu

3. Rozkład macierzy według wartości szczególnych

mechanika analityczna 2 nierelatywistyczna L.D.Landau, E.M.Lifszyc Krótki kurs fizyki teoretycznej

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

Wprowadzenie do WK1 Stan naprężenia

Wykład 2. Funkcja logarytmiczna. Definicja logarytmu: Własności logarytmu: Logarytm naturalny: Funkcje trygonometryczne

REZONANSY : IDENTYFIKACJA WŁAŚCIWOŚCI PRZEZ ANALIZĘ FAL PARCJALNYCH, WYKRESY ARGANDA

Elektrostatyka. Prawo Coulomba Natężenie pola elektrycznego Energia potencjalna pola elektrycznego

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

Laboratorium 03: Podstawowe konstrukcje w języku Java [2h]

CAŁKOWANIE NUMERYCZNE

C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy WSKAŹNIKI KLASOWE

Algebra WYKŁAD 6 ALGEBRA 1

Transkrypt:

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, który obserwowny jest przez kmerę, orz sposób odzwierciedlni przestrzeni n ekrnie. Typy odzwierciedlni przestrzeni w OpenGL: Projekcj prostopdł Projekcj perspektywiczn Dostępn jest również trnsformcj wycinjąc określjąc sposób przenoszeni sceny bezpośrednio n okno progrmu.

OpenGL projekcj prostopdł top left Kierunek ptrzeni n scenę bottom ner right fr void glortho( GLdouble left, GLdouble right, GLdouble bottom GLdouble top, GLdouble ner, GLdouble fr ; 2

OpenGL projekcj perspektywiczn ( top left ner bottom right fr void glfrustum(gldouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zner, GLdouble zfr ; 3

OpenGL projekcj perspektywiczn (2 spect=w/h w h fovy ner fr void gluperspective( GLdouble fovy, GLdouble spect, GLdouble zner, GLdouble zfr ; 4

OpenGL projekcj prostopdł - przykłd void ChngeSize(GLsizei w, GLsizei h { GLflot nrnge = 2.f; if(h = = h = ; glviewport(,, w, h; glmtrixmode(gl_projection; gllodidentity(; if (w <= h glortho (-nrnge, nrnge, -nrnge*h/w, nrnge*h/w, -nrnge*2.f, nrnge*2.f; else glortho (-nrnge*w/h, nrnge*w/h, -nrnge, nrnge, -nrnge*2.f, nrnge*2.f; } glmtrixmode(gl_modelview; gllodidentity(; 5

OpenGL projekcj perspektywiczn - przykłd void ChngeSize(GLsizei w, GLsizei h { GLflot faspect; if(h == h = ; glviewport(,, w, h; faspect = (GLflotw/(GLfloth; glmtrixmode(gl_projection; gllodidentity(; gluperspective(6.f, faspect,., 4.; glmtrixmode(gl_modelview; gllodidentity(; } 6

Notcj jednorodn: OpenGL modelownie/obserwcj P [ x, y, z, w] =, gdzie : x k = x w, y k = y w, z k = z w zwykle: P = [ x, y, z,] 7

OpenGL modelownie/obserwcj Mcierz jednorodn: Mcierz przeksztłceń: 2 3 4 2 22 32 42 3 23 33 43 4 24 44 2 2 22 3 23 34 3 32 33 Mcierz trnslcji: Mcierz znieksztłceń optycznych: 4 24 34 [ ] 4 42 44 8

9 OpenGL modelownie/obserwcj Zleżność pomiędzy współrzędnymi punktów w różnych ukłdch współrzędnych: ukld rownn liniowych : zpis mcierzowy: 3 33 32 3 2 23 22 2 3 2 3 33 32 3 2 23 22 2 3 2 + + + = + + + = + + + = = r z y x z r z y x y r z y x x z y x r r r z y x

OpenGL modelownie/obserwcj Obrót wokół osi z o kąt Obrót wokół osi y o kąt cos( sin( sin( cos( cos( sin( sin( cos( Przesunięcie o wektor x v, y v, z v Obrót wokół osi x o kąt v v v z y x cos( sin( sin( cos(

OpenGL modelownie/obserwcj Sklownie: Zmniejszenie obiektu: c b S

2 OpenGL modelownie/obserwcj Skłdnie przeksztłceń w notcji jednorodnej poleg n mnożeniu kolejnych mcierzy przeksztłceń. Z uwgi n nieprzemienność mnożeni mcierzy nieprzemienne jest skłdnie przeksztłceń. W wyniku mnożeni uzyskuje się zwsze mcierz 4 x 4 odwzorowującą współrzędne dnego obiektu n współrzędne po przeksztłceniu. Np. złożenie przeksztłceń Rot(x,3 Trns(,3, uzyskuje się przez pomnożenie mcierzy: = 3sin(3 cos(3 sin(3 cos(3 sin(3 cos(3 3 cos(3 sin(3 sin(3 cos(3

OpenGL modelownie/obserwcj Początkow orientcj i kierunek obserwcji sceny w OpenGL: y Kierunek obserwcji obiektywu kmery z x Okno progrmu 3

OpenGL modelownie/obserwcj Definiownie włsnych mcierzy przeksztłceń w OpenGL: { double x =.; sttic double reset[]= {.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,. }; sttic double trns[]= {.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,. gllodmtrixd(reset; //gllodidentity(; glmultmtrixd(trns; trns[2]+=x; glrectd(-2.,-2.,2.,2.; } 4

OpenGL modelownie/obserwcj Podstwowe skłdnie przeksztłceń: { double x =.; double =.; sttic double ngle =.; sttic double trns[]= {.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,. }; sttic double rot[]= {.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,. }; gllodidentity(; glmultmtrixd(trns; glmultmtrixd(rot; trns[2]+=x; ngle+=; rot[]=cos(ngle*3.4/8; rot[]=-sin(ngle*3.4/8; rot[4]=sin(ngle*3.4/8; rot[5]=cos(ngle*3.4/8; glrectd(-2.,-2.,2.,2.; 5

OpenGL modelownie/obserwcj Predefiniowne funkcje OpenGL do trnsformcji ukłdów współrzędnych: { double b =.; double =.; sttic double ngle =.; sttic double x =.; gllodidentity(; gltrnslted(x,,; //void gltrnsltef(glflot x, GLflot y, GLflot z; glrotted(ngle,,,-; //void glrottef(glflot ngle,glflot x,glflot y, GLflot z; ngle+=; x+=b; glrectd(-2.,-2.,2.,2.;} Trzeci funkcj umożliwi zdefiniownie sklowni: void glsclef(glflot z,glflot y,glflot z; 6

OpenGL zwnsowne skłdnie przeksztłceń Skłdnie kilku przeksztłceń: { sttic double rot=., rot2=.; gllodidentity(; glrectd(-.,-.,.,.; glrotted(rot,,,; gltrnslted(3,,; glrotted(rot2,,,; } glrectd(-.,-.,.,.; rot+=.; rot2-=2.; 7

OpenGL zwnsowne skłdnie przeksztłceń Funkcje glpushmtrix(; i glpopmtrix(; { sttic double rot=., rot2=.; gllodidentity(; glrectd(-.,-.,.,.; glpushmtrix(; glrotted(rot,,,; gltrnslted(3,,; glrotted(rot2,,,; glrectd(-.,-.,.,.; glpopmtrix(; glpushmtrix(; glrotted(-rot,,,; gltrnslted(6,,; glrotted(-rot2,,,; glrectd(-.,-.,.,.; glpopmtrix(; } rot+=.; rot2-=2.; 8

OpenGL przykłd uproszczony model robot // Ustlenie odwzorowni przestrzeni: void ChngeSize(GLsizei w, GLsizei h { GLflot faspect; if(h == h = ; glviewport(,, w, h; faspect = (GLflotw/(GLfloth; glmtrixmode(gl_projection; gllodidentity(; gluperspective(65.f, faspect,., 5.; } glmtrixmode(gl_modelview; gllodidentity(; 9

OpenGL przykłd uproszczony model robot // Obsług klwitury: cse WM_KEYDOWN: switch ((intwprm { cse VK_ESCAPE: DestroyWindow(hWnd; brek; cse : elbowadd(; InvlidteRect(hWnd, NULL, FALSE; brek; cse 2: elbowsubtrct(; InvlidteRect(hWnd, NULL, FALSE; brek;... defult: brek; } brek; 2

OpenGL przykłd uproszczony model robot // Rysownie sceny: void RenderScene(void { glmtrixmode(gl_modelview; gllodidentity(; //gltrnsltef(.f,.f,-5.f; //glrotted(2.,.,.,.; /* glulookat(.,.,5.,.,.,.,.,.,. ; glulookat(.,5.,.,.,.,.,.,.,-. ; */ 2

OpenGL przykłd uproszczony model robot // Rysownie sceny (cd: glcler(gl_color_buffer_bit GL_DEPTH_BUFFER_BIT; glcolor3f (.,.,.; glpushmtrix(; gltrnsltef(2.f,.f,.f; uxwirebox(.,.,.; glpopmtrix(; glpushmtrix(; gltrnsltef (., -.6,.; uxwirebox(.,.2,.; gltrnsltef (.,.6,.; glrottef ((GLflot bse,.,.,.; uxwirebox(.4,.,.4; gltrnsltef (.,.5,.; glrottef ((GLflot elbow,.,.,.; gltrnsltef (.,.5,.; uxwirebox(.4,.,.4; 22

OpenGL przykłd uproszczony model robot // Rysownie sceny (cd: gltrnsltef (.,.5,.; glrottef ((GLflot wrist,.,.,.; gltrnsltef (.,.5,.; uxwirebox(.4,.,.4; glpopmtrix(; glflush(; } 23