Cómo renderizar un círculo en OpenGL

Autor: John Stephens
Fecha De Creación: 25 Enero 2021
Fecha De Actualización: 21 Noviembre 2024
Anonim
Cómo renderizar un círculo en OpenGL - Electrónica
Cómo renderizar un círculo en OpenGL - Electrónica

Contenido

OpenGL, o Open Graphics Library, es una API de gráficos (interfaz de programación de aplicaciones) para escribir aplicaciones 2D y 3D en varios lenguajes y plataformas de programación. Se puede utilizar para renderizar cualquier cosa, desde objetos simples y primitivos hasta complejas escenas en 3D. Open GL es ampliamente utilizado en diseño de computadoras, visualización científica, simulación de vuelo y videojuegos. Aunque OpenGl no tiene métodos para dibujar un círculo directamente, es posible construir uno usando una serie de líneas. Necesitará tener conocimientos básicos de OpenGL para dibujar el círculo.

Paso 1

Haga un programa básico con una ventana gráfica OpenGL. Si no está familiarizado con este proceso, hay un tutorial en la página de OpenGL.


Paso 2

Agregue el archivo math.h.header a su programa ingresando el siguiente código al comienzo del programa: #include . Esto le proporcionará las funciones cos () y sin () (seno y coseno) necesarias para calcular el círculo.

Paso 3

Inicie el método del círculo agregando el siguiente código antes de mostrar la función de devolución de llamada:

vacío drawCircle (GLint x, GLint y, GLint radio, int num_lines) {}

Las variables "x" e "y" se utilizarán para definir el centro del círculo en su ventana, mientras que el "radio" establece el radio del círculo. El entero "num_lines" es el número de líneas que se utilizan para componer el círculo. Cuanto mayor sea este número, más suave aparecerá el círculo.

Paso 4

Agregue el siguiente código de configuración dentro de las claves:

ángulo de flotación GO int num_lines GO glColor3f (0.0, 0.0, 0.0) GO.

La variable "ángulo" contendrá el ángulo de las líneas utilizadas para construir el círculo. Llamar a la función glColor3f () establece el color de las líneas en negro, donde la serie de tres 0 corresponde a la intensidad de rojo, verde y azul en una escala de 0 a 1.


Paso 5

Agregue el siguiente código debajo de la función glColor3f () del paso 4:

glBegin (GL_LINE_LOOP) GO

Esto le dice a OpenGL que cualquier línea subsiguiente implica dibujar líneas. Específicamente, dibujará un "GL_LINE_LOOP", que es una serie de líneas conectadas.

Paso 6

Ingrese el siguiente código para un bucle for después de la llamada glBegin ():

para (int i = 0; i <número_fila; i ++) {ángulo = i * 2 * M_PI / num_line; glVertex2f (x + (cos (ángulo) * radio), y + (sin (ángulo) * radio)); }

Este bucle hace tres cosas. Primero, itera según el valor de "num_lines", donde num_lines es un número entero, trazando una línea en cada iteración y dando como resultado un círculo compuesto de líneas rectas num_lines. En segundo lugar, calcula el ángulo de las líneas con respecto al centro del círculo en radianes. "M_P" es una constante definida en math.h que representa pi. Finalmente, la llamada a glVertex2f () calcula las coordenadas de los puntos finales de las líneas.


Paso 7

Después del bucle, ingrese la siguiente línea de código:

glEnd () GO

Esto le dirá a OpenGL que ha terminado de dibujar las líneas.

Paso 8

Para dibujar el círculo en una escena, agregue una llamada desde el método drawCircle () a la función de visualización de devolución de llamada del programa, que debe prepararse en el paso 1. Especifique los valores de x, y, radius y num_lines, donde xey representan un punto en su escena, radio es el radio del círculo y num_lines es el número de líneas que forman el círculo. Nuevamente, si no está familiarizado con OpenGL y la pantalla de devolución de llamada, consulte el tutorial de OpenGL.

Paso 9

Compile y ejecute su programa. Si ingresó las funciones correctamente, debería compilarse sin errores. Si especificó los valores para x, y y radio, debería ver un círculo negro sobre un fondo blanco.

Un rincón de deayuno e un área de cocina parcialmente ailada que tiene uficiente epacio para una pequeña mea y illa. La depena e ua comúnmente no olo para el deayuno, ino tambi...

Hay mucha coa que cauan eccema, incluida la alergia comune a lo jabone, perfume y tinte. No e una enfermedad cutánea contagioa, in embargo, parece etar relacionada con factore genético. La d...

Recomendado