Sådan gengives en cirkel i OpenGL

Forfatter: Eugene Taylor
Oprettelsesdato: 10 August 2021
Opdateringsdato: 14 November 2024
Anonim
Sådan gengives en cirkel i OpenGL - Elektronik
Sådan gengives en cirkel i OpenGL - Elektronik

Indhold

OpenGL, eller Open Graphics Library, er et grafisk API (Application Programming Interface) til at skrive 2D- og 3D-applikationer på forskellige programmeringssprog og platforme. Det kan bruges til at gengive alt fra enkle, primitive objekter til komplekse 3D-scener. Open GL bruges i vid udstrækning inden for computerdesign, videnskabelig visualisering, flysimulering og videospil. Selvom OpenGl ikke har metoder til at tegne en cirkel direkte, er det muligt at bygge en ved hjælp af en række linjer. Du bliver nødt til at have en grundlæggende viden om OpenGL for at tegne cirklen.

Trin 1

Lav et grundlæggende program med en OpenGL-visningsport. Hvis du ikke er fortrolig med denne proces, er der en tutorial på OpenGL-siden.


Trin 2

Føj math.h.header-filen til dit program ved at indtaste følgende kode i begyndelsen af ​​programmet: #include . Dette giver dig funktionerne cos () og sin () (sinus og cosinus), der er nødvendige for at beregne cirklen.

Trin 3

Start cirkelmetoden ved at tilføje følgende kode, inden du viser tilbagekaldsfunktionen:

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

Variablerne "x" og "y" vil blive brugt til at definere centrum af cirklen i dit vindue, mens "radius" opretter cirkelens radius. Heltallet "num_lines" er antallet af linjer, der bruges til at komponere cirklen. Jo højere dette tal, jo glattere vises cirklen.

Trin 4

Tilføj følgende konfigurationskode inde i tasterne:

flydevinkel GO int num_lines GO glColor3f (0.0, 0.0, 0.0) GO.

Variablen "vinkel" vil indeholde vinklen på de linjer, der bruges til at konstruere cirklen. Ved at kalde funktionen glColor3f () indstilles linjernes farve til sort, hvor serien på tre 0 svarer til intensiteten af ​​rød, grøn og blå på en skala fra 0 til 1.


Trin 5

Tilføj følgende kode under glColor3f () -funktionen fra trin 4:

glBegin (GL_LINE_LOOP) GO

Dette fortæller OpenGL, at eventuelle efterfølgende linjer involverer tegning af linjer. Specifikt tegner den en "GL_LINE_LOOP", som er en række tilsluttede linjer.

Trin 6

Indtast følgende kode for en for loop efter glBegin () opkaldet:

for (int i = 0; i <række_nummer; i ++) {vinkel = i * 2 * M_PI / num_line; glVertex2f (x + (cos (vinkel) * radius), y + (sin (vinkel) * radius)); }

Denne løkke gør tre ting. For det første gentages det i henhold til værdien af ​​"num_lines", hvor num_lines er et heltal, der tegner en linje i hver iteration og resulterer i en cirkel sammensat af lige linjer num_lines. For det andet beregner den vinklen på linjerne i forhold til centrum af cirklen i radianer. "M_P" er en konstant defineret i matematik.h, der repræsenterer pi. Endelig beregner kaldet til glVertex2f () koordinaterne for linjens slutpunkter.


Trin 7

Efter loop-to skal du indtaste følgende linje kode:

glEnd () GO

Dette vil fortælle OpenGL, at du er færdig med at tegne linjerne.

Trin 8

For at tegne cirklen i en scene skal du tilføje et opkald fra drawCircle () -metoden til programmets tilbagekaldningsvisningsfunktion, som skal forberedes i trin 1. Angiv værdierne x, y, radius og num_lines, hvor x og y repræsenterer et punkt i din scene er radius cirkelens radius, og num_lines er antallet af linjer, der udgør cirklen. Igen, hvis du ikke er bekendt med OpenGL og tilbagekaldsdisplayet, se OpenGL-vejledningen.

Trin 9

Kompilér og kør dit program. Hvis du indtastede funktionerne korrekt, skulle det kompileres uden fejl. Hvis du har angivet værdierne for x, y og radius, skal du se en sort cirkel vises på en hvid baggrund.

Hvordan man laver "kold" sæbe

Tamara Smith

November 2024

Du kan oprette en kold proce til at fremtille æber, der indeholder næten enhver eentiel olie, fedt, aroma eller dehydreret mad. Den pågældende proce deler nogle ingrediener: de ind...

Skiftvejlederens ansvar

Tamara Smith

November 2024

En kifttilynførende har mange anvarområder, om alle kan variere efter virkomhed. En kiftvejleder arbejder tæt ammen med lederen og omtale ofte om algchef, afdelingleder eller aiterende ...

Artikler I Portal.