Atom Blog

Como dibujar Circunferencias en OpenGL en Java Netbeans 7.1


En esta nueva entrada veremos como dibujar una circunferencia y una semicircunferencia a traves de opengl en Java utilizando la IDE Netbeans 7.1.

Para poder dibujar una circunferencia hacemos uso de la funcion gl.GL_POLYGON.

Antes que nada es importante saber que para poder utilizar opengl en netbeans se debe tener instalado el plugin que permite hacer esto.

Para poder utilizar opengl en netbeans seguir el siguiente enlace:
Como Agregar Plugin de OpenGL a Netbeans.

El dibujo de una circunferencia es muy sencillo y se logra a traves del siguiente codigo:

        //Dibuja circunferencia
        gl.glBegin(gl.GL_POLYGON);
            for(int i=0; i<100; i++){
               float x = (float) Math.cos(i*2*Pi/100);
               float y = (float) Math.sin(i*2*Pi/100);
               gl.glVertex2f(x, y); gl.glColor3f(1.0f, 0.8f, 0.2f);
            }
        gl.glEnd();
        gl.glFlush();

Como se puede observar, se dibuja un poligono de muchisimos lados, lo que da la impresion que se esta dibujando una circunferencia.

Para el dibujo de la semicircunferencia el codigo es muy parecido, la unica diferencia esta en que la variable "i" recorre hasta el numero 51, en vez de recorrer hasta el numero 100 como es el caso de la circunferencia.

       //dibuja semiCircunferencia
        gl.glBegin(gl.GL_POLYGON);
            for(int i=0; i<51; i++){
               float x = (float) Math.cos(i*2*Pi/100);
               float y = (float) Math.sin(i*2*Pi/100);
               gl.glVertex2f(x, y); gl.glColor3f(0.0f, 1.0f, 1.0f);
            }
        gl.glEnd();
        gl.glFlush();

Para poder utilizar este codigo se debe declarar la variable "Pi" con anterioridad al inicio de la clase:

 public static final double Pi = 3.14159265358979323846;

El codigo completo utilizado para nuestra aplicacion es el siguiente:


La salida de nuestra aplicacion se vera de la siguiente manera:

Si se desea descargar el proyecto completo click en la siguiente imagen:





8 comentarios:

  1. donde se define el tamañop de la sircunferencia???

    ResponderBorrar
  2. gl.glVertex2f(x, y);
    puedes establecer un radio en las coordenadas x e y
    gl.glVertex2f(radio*x, radio*y);
    saludos

    ResponderBorrar
  3. gl.glVertex2f(x, y);
    puedes establecer un radio en las coordenadas x e y
    gl.glVertex2f(radio*x, radio*y);
    saludos

    ResponderBorrar
  4. buenos dias amigo si me podria enseñar como hacer un recorrido virtual en NETBEANS JOGL (OPEN GL)

    ResponderBorrar
  5. Este comentario ha sido eliminado por el autor.

    ResponderBorrar
  6. como cambio su posición en el frame?

    ResponderBorrar
    Respuestas
    1. Si lo que necesitas es un movimiento constante sin interacción con eventos puedes sumarle una constante y usar un delay o bien un FPSAnimator en lugar del Animator común.

      final FPSAnimator animator = new FPSAnimator(canvas);///dentro de tu main

      static int fps = 5; //O lo que tu requieras
      static float x = (float) Math.cos(i*2*Pi/100);
      .
      .
      .
      float acceleracion = 0.005/;
      //Dibuja circunferencia
      gl.glBegin(gl.GL_POLYGON);
      for(int i=0; i<100; i++){
      x += acc;
      float y = (float) Math.sin(i*2*Pi/100);
      gl.glVertex2f(x, y); gl.glColor3f(1.0f, 0.8f, 0.2f);
      }
      gl.glEnd();
      gl.glFlush();

      Borrar
  7. Circunferencia y circulo son cosas distintas.

    ResponderBorrar