Jak wyrenderować okrąg w OpenGL

Autor: Eugene Taylor
Data Utworzenia: 12 Sierpień 2021
Data Aktualizacji: 14 Listopad 2024
Anonim
Blender - Ruch kamery po okręgu
Wideo: Blender - Ruch kamery po okręgu

Zawartość

OpenGL, czyli Open Graphics Library, to graficzny interfejs API (interfejs programowania aplikacji) służący do pisania aplikacji 2D i 3D w różnych językach programowania i na różnych platformach. Może być używany do renderowania wszystkiego, od prostych, prymitywnych obiektów po złożone sceny 3D. Open GL jest szeroko stosowany w projektowaniu komputerowym, wizualizacji naukowej, symulacji lotu i grach wideo. Mimo że OpenGl nie ma metod bezpośredniego rysowania okręgu, można go zbudować za pomocą szeregu linii. Aby narysować okrąg, musisz mieć podstawową wiedzę o OpenGL.

Krok 1

Stwórz podstawowy program z rzutnią OpenGL. Jeśli nie jesteś zaznajomiony z tym procesem, na stronie OpenGL znajduje się samouczek.


Krok 2

Dodaj plik math.h.header do swojego programu, wprowadzając następujący kod na początku programu: #include . Zapewni to funkcje cos () i sin () (sinus i cosinus) potrzebne do obliczenia okręgu.

Krok 3

Uruchom metodę circle, dodając następujący kod przed wyświetleniem funkcji zwrotnej:

void drawCircle (GLint x, GLint y, GLint radius, int num_lines) {}

Zmienne „x” i „y” zostaną użyte do zdefiniowania środka okręgu w twoim oknie, podczas gdy „promień” ustali promień okręgu. Liczba całkowita „num_lines” to liczba wierszy użytych do utworzenia koła. Im wyższa liczba, tym gładsze będzie koło.

Krok 4

Dodaj następujący kod konfiguracyjny wewnątrz kluczy:

kąt zmiennoprzecinkowy GO int num_lines GO glColor3f (0,0, 0,0, 0,0) GO.

Zmienna „kąt” będzie zawierała kąt linii użytych do skonstruowania okręgu. Wywołanie funkcji glColor3f () ustawia kolor linii na czarny, gdzie seria trzech 0 odpowiada intensywności koloru czerwonego, zielonego i niebieskiego w skali od 0 do 1.


Krok 5

Dodaj następujący kod poniżej funkcji glColor3f () z kroku 4:

glBegin (GL_LINE_LOOP) GO

To mówi OpenGL, że wszelkie kolejne linie obejmują rysowanie linii. W szczególności narysuje „GL_LINE_LOOP”, czyli serię połączonych linii.

Krok 6

Wprowadź następujący kod pętli for po wywołaniu funkcji glBegin ():

for (int i = 0; i <row_number; i ++) {angle = i * 2 * M_PI / num_line; glVertex2f (x + (cos (kąt) * promień), y + (sin (kąt) * promień)); }

Ta pętla robi trzy rzeczy. Po pierwsze, iteruje zgodnie z wartością „num_lines”, gdzie num_lines jest liczbą całkowitą, rysując linię w każdej iteracji i tworząc okrąg złożony z linii prostych num_lines. Po drugie, oblicza kąt prostych względem środka koła w radianach. „M_P” jest stałą zdefiniowaną w math.h reprezentującą liczbę pi. Na koniec wywołanie funkcji glVertex2f () oblicza współrzędne punktów końcowych linii.


Krok 7

Po zakończeniu pętli wprowadź następujący wiersz kodu:

glEnd () GO

To powie OpenGL, że zakończyłeś rysowanie linii.

Krok 8

Aby narysować okrąg w scenie, dodaj wywołanie metody drawCircle () do funkcji wyświetlania wywołania zwrotnego programu, którą należy przygotować w kroku 1. Określ wartości x, y, radius i num_lines, gdzie x i y reprezentują punkt w twojej scenie promień to promień okręgu, a num_lines to liczba linii, które tworzą okrąg. Ponownie, jeśli nie jesteś zaznajomiony z OpenGL i wyświetlaniem wywołań zwrotnych, zobacz samouczek OpenGL.

Krok 9

Skompiluj i uruchom swój program. Jeśli poprawnie wpisałeś funkcje, powinno się skompilować bez błędów. Jeśli podałeś wartości x, y i promień, powinieneś zobaczyć czarne kółko wyświetlane na białym tle.

Problemy z okularami bez oprawek

Eugene Taylor

Listopad 2024

Okulary mogą być zarówno tylowe, jak i funkcjonalne. ą dotępne w trzech podtawowych modelach: ze trukturalną ramką wokół obu oczewek, z półramką wokół górnej lub - rzadko - na...

Oznaki i objawy alergii na ibuprofen

Eugene Taylor

Listopad 2024

Niektóre ooby ą uczulone na ibuprofen i nie powinny przyjmować leku. Wiele oób uczulonych na apirynę jet również uczulonych na ten lek. Według MedicineNet.com natępujące objawy ą objawa...

Fascynujący