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.
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:
donde se define el tamañop de la sircunferencia???
ResponderBorrargl.glVertex2f(x, y);
ResponderBorrarpuedes establecer un radio en las coordenadas x e y
gl.glVertex2f(radio*x, radio*y);
saludos
gl.glVertex2f(x, y);
ResponderBorrarpuedes establecer un radio en las coordenadas x e y
gl.glVertex2f(radio*x, radio*y);
saludos
buenos dias amigo si me podria enseñar como hacer un recorrido virtual en NETBEANS JOGL (OPEN GL)
ResponderBorrarEste comentario ha sido eliminado por el autor.
ResponderBorrarcomo cambio su posición en el frame?
ResponderBorrarSi 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.
Borrarfinal 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();
Circunferencia y circulo son cosas distintas.
ResponderBorrar