Lab2 - Grade: 5,0 PDF

Title Lab2 - Grade: 5,0
Course Grafika kom.i kom.człow.-komp.
Institution Politechnika Wroclawska
Pages 3
File Size 330.3 KB
File Type PDF
Total Downloads 34
Total Views 137

Summary

Open GL – podstawy...


Description

Kajetan Parzyszek 225940

25-10-2018r.

Grafika komputerowa – Laboratorium Prowadzący dr inż. Tomasz Kapłon

Ćwiczenie 2 Open GL – podstawy Cel ćwiczenia: Zapoznanie się z podstawowymi możliwościami biblioteki OpenGL wraz z rozszerzeniem GL Utility Toolkit (GLUT) Wstęp: Przed wykonanie wymaganych zadań niezbędne było zapoznanie się z elementarnymi funkcjami i stałymi zawartymi w bibliotece OpenGl, takimi jak: • glBegin(GLenum mode)/glEnd() – f. definiujące start i koniec rysowania figury wybranej argumentem mode • glVertex2f(GLfloat x, GLfloat y) – f. używana między glBegin()/glEnd() w celu zdefiniowania punktu dla rysowanego kształtu • glColor3f(GLfloat red, GLfloat green, GLfloat blue) – f. używana w celu zdefiniowania koloru rysowanego punktu Umiejętnościami również wymaganymi lecz nie związanymi bezpośrednio z wykonywanymi zadaniami była instalacja biblioteki GLUT w środowisku Microsoft Visual Studio oraz utworzenie szkieletu każdej aplikacji wykorzystującej OpenGl zawierającym tworzenie okna wraz z modelem definiującym działanie w przypadku zmiany jego rozmiaru.

Dywan Sierpińskiego

Rysunek 1 Efekt końcowy dla kolejno stopnia głębokości dywanu równego 1, 2 i 3

Zadaniem do wykonania w trakcie zajęć była implementacja podanego algorytmu generacji dywanu Sierpińskiego. Algorytm generowania dywanu: ############### # 1 ## 2 ## 3 # ############### # 4 ## 9 ## 5 # ############### # 6 ## 7 ## 8 # ###############

1. Kwadrat wejściowy o boku a dzielimy na 9 równych kwadratów o bokach a/3 2. Kwadrat środkowy usuwamy 3. Dla każdego pozostałego kwadratu wykonujemy operacje 1-3 Algorytm kończy swoje działanie gdy osiągniemy oczekiwany przez nas poziom głębokości lub gdy a/3 < 1. Efekt implementacji: Udało się uzyskać zamierzony cel, czyli dywan Sierpińskiego z losowo wygenerowanymi kolorami o modyfikowalnym poziomie głębokości jak widać na rysunku 1. Wnioski: Korzystanie z biblioteki OpenGL w celu rysowania obiektów 2D jest stosunkowo proste jeżeli zna się podstawowe funkcje wykorzystywane przy budowie programu, gdyż wszelkie skutki pomyłek w kodzie programu można zaobserwować w postaci graficznej i nanieść odpowiednie poprawki bez potrzeby debugowania kodu.

Układ odwzorowań iterowanych

Rysunek 2 Efekt końcowy dla kolejno ilości punktów równej 1000, 10000, 100000

Z zadań do wykonania w domu wybrałem układ odwzorowań iterowanych (Iterated function system), czyli implementacje algorytmu rysującego „choinkę”.

Algorytm generacji zbioru punktów: 1. Wybór i narysowanie punktu startowego o współrzędnych x, y 2. Ze zbioru odwzorowań takiego jak podany poniżej wybrać jedno, posługując się generatorem liczb losowych float afini[4][6] = { {-0.67, -0.02, 0.00, -0.18, 0.81, 10.00}, // φ1 {0.40, 0.40, 0.00, -0.10, 0.40, 0.00}, // φ2 {-0.40, -0.40, 0.00, -0.10, 0.40, 0.00}, // φ3 {-0.10, 0.00, 0.00, 0.44, 0.44, -2.00} // φ4 };

3. Używając wylosowanego odwzorowania w punkcie 2. zmodyfikować współrzędne x, y x = afini[afiniChoice][0] * x + afini[afiniChoice][1] * y + afini[afiniChoice][2]; y = afini[afiniChoice][3] * x + afini[afiniChoice][4] * y + afini[afiniChoice][5];

4. Narysować punkt dla nowo wybranych współrzędnych 5. Powtórzyć kroki 2-4 do momentu uzyskania żądanej liczby punktów Implementacja algorytmu: void RenderScene(void) { /*...*/ glBegin(GL_POINTS); glColor3f(0, 1, 0); glVertex2f(startX, startY); glEnd(); GLfloat x = startX, y = startY; for (int i = 0; i < reps; i++) { iterate(x, y); glBegin(GL_POINTS); glColor3f(0, 1, 0); glVertex2f(x, y); glEnd(); } /*...*/ }

Efekt implementacji: Udało się uzyskać zamierzony cel, czyli zbiór punktów przypominający „choinkę”, wygenerowany na podstawie odwzorowań, o modyfikowalnej liczbie punktów jak widać na rysunku 2. Wnioski: Generując odpowiednio dużą liczbę punktów korzystając z wyżej opisanej metody wydaje się możliwe „oszukanie” obserwatora, że to co widzi może być realnym obiektem a nie jedynie wygenerowanym obrazem 2D. Im więcej punktów zostanie wygenerowanych i im dalej obserwator znajduje się od generowanego obiektu tym większe prawdopodobieństwo uznania obiektu 2D za rzeczywisty....


Similar Free PDFs