Como renderizar um círculo em OpenGL

Creatas/Creatas/Getty Images
OpenGL, ou Open Graphics Library (Biblioteca de gráficos livre), é uma API gráfica (Interface de programação de aplicativos, na sigla em inglês) para escrever aplicativos 2D e 3D em várias linguagens e plataformas de programação. Ela pode ser usada para renderizar qualquer coisa, desde objetos simples e primitivos até cenas 3D complexas. O Open GL é largamente utilizado em design computadorizado, visualização científica, simulação de voo e videogames. Mesmo que o OpenGl não tenha métodos para desenhar um círculo diretamente, é possível construir um usando uma série de linhas. Você precisará ter um conhecimento básico de OpenGL para desenhar o círculo.
Step 1
Faça um programa básico com uma janela de viewport OpenGL. Se não estiver familiarizado com esse processo, existe um tutorial na página do OpenGL.
Step 2
Adicione o arquivo math.h.header ao seu programa entrando o seguinte código no início do programa: #include
Step 3
Comece o método do círculo adicionando o seguinte código antes de exibir a função callback:
void desenharCirculo(GLint x, GLint y, GLint raio, int num_linhas) { }
As variáveis "x" e "y" serão usadas para definir o centro do círculo na sua janela, enquanto o "raio" estabelece o raio do círculo. O inteiro "num_linhas" é o número de linhas usado para compor o círculo. Quanto maior esse número, mais suave o círculo parecerá.
Step 4
Adicione o seguinte código de configuração dentro das chaves:
float angulo GO int num_linhas GO glColor3f(0.0, 0.0, 0.0) GO.
A variável "angulo" conterá o ângulo das linhas usadas para construir o círculo. A chamada da função glColor3f() define a cor das linhas para preto, onde a série de três 0 corresponde à intensidade de vermelho, verde e azul numa escala de 0 a 1.
Step 5
Adicione o seguinte código abaixo da função glColor3f() do passo 4:
glBegin(GL_LINE_LOOP) GO
Isso diz ao OpenGL que quaisquer linhas seguintes envolvem o desenho de linhas. Especificamente, ela desenhará um "GL_LINE_LOOP", que é uma série de linhas conectadas.
Step 6
Entre o seguinte código de um laço de para depois da chamada do glBegin():
for(int i = 0; i < num_linhas; i++) { angulo = i * 2 * M_PI / num_linhas; glVertex2f(x + (cos(angulo) * raio), y + (sin(angulo) * raio)); }
Esse laço faz três coisas. Primeiramente, ela itera de acordo com o valor de "num_linhas", onde num_linhas é um número íntegro, desenhando uma linha em cada iteração e resultando em um círculo composto de num_linhas de linhas retas. Em segundo lugar, computa o ângulo das linhas relativo ao centro do círculo em radianos. "M_P" é uma constante definida em math.h representando pi. Finalmente, a chamada do glVertex2f() calcula as coordenadas dos pontos finais das linhas.
Step 7
Depois do laço-para, entre a seguinte linha de código:
glEnd() GO
Isso dirá ao OpenGL que você terminou de desenhar as linhas.
Step 8
Para desenhar o círculo em uma cena, adicione uma chamada do método drawCircle() para a função de display callback do programa, que deve ser preparada no passo 1. Especifique os valores de x, y, raio e num_linhas, onde x e y representam um ponto na sua cena, raio é o raio do círculo, e num_linhas é o número de linhas que compõe o círculo. Novamente, se não estiver familiarizado com o OpenGL e o display callback, veja o tutorial do OpenGL.
Step 9
Compile e rode seu programa. Se tiver entrado as funções corretamente, ele deve compilar sem erros. Se tiver especificado os valores de x, y e raio, você deve ver um círculo preto exibido em um fundo branco.
Referências
Recursos
Sobre o Autor
Rob Senn is a college graduate with a degree in English looking to utilize his writing skills while pursuing a graduate degree in computer science. He has been a hobbyist fiction writer for a number of years, as well as a writing assistant during college.
Créditos Fotográficos
Creatas/Creatas/Getty Images