Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Para nuestro trabajo final utilizaremos el IDE NETBEANS 8.2, utilizando el lenguaje de
Programación JAVA
Al lado izquierdo se muestra las clases y componentes de la Ventana así como el modulo
incorporado al proyecto los cuales son:
GLUEGEN-RT-gluegen-rt.jar y JOGL – jogl.jar
En la parte central se muestra el diseño de la interfaz, y en la parte derecha se muestra los
atributos por componentes
CODIGO EN JAVA
import com.sun.opengl.util.Animator;
import javax.media.opengl.GL;
import javax.media.opengl.GLAutoDrawable;
import javax.media.opengl.GLCanvas;
import javax.media.opengl.GLCapabilities;
import javax.media.opengl.GLEventListener;
import com.sun.opengl.util.GLUT;
import javax.media.opengl.glu.GLU;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
/**
*
* @author usuario
*/
public class FramePintorOpenGL extends JFrame {
GraphicListener listener;
GLCanvas canvas;
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setTitle("FIGURAS GEOMETRICAS OPENGL - JAVA");
getContentPane().setLayout(null);
menuFigura.setText("FIGURAS 2D");
mlin.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK
_U, 0));
mlin.setMnemonic('U');
mlin.setText("CIRCULO");
mlin.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
mlinActionPerformed(evt);
}
});
menuFigura.add(mlin);
jMenuItem1.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyE
vent.VK_L, 0));
jMenuItem1.setText("LINEA");
jMenuItem1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jMenuItem1ActionPerformed(evt);
}
});
menuFigura.add(jMenuItem1);
mtri.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK
_T, 0));
mtri.setText("TRIANGULO");
mtri.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
mtriActionPerformed(evt);
}
});
menuFigura.add(mtri);
mcua.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.V
K_C, 0));
mcua.setText("CUADRADO");
mcua.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
mcuaActionPerformed(evt);
}
});
menuFigura.add(mcua);
mrec.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.V
K_R, 0));
mrec.setText("RECTANGULO");
mrec.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
mrecActionPerformed(evt);
}
});
menuFigura.add(mrec);
mpol.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.V
K_P, 0));
mpol.setText("POLIGONO");
mpol.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
mpolActionPerformed(evt);
}
});
menuFigura.add(mpol);
mher.setText("HERRAMIENTAS");
jMenu4.setText("ZOOM");
maum.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.V
K_ADD, 0));
maum.setText("AUMENTAR");
maum.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
maumActionPerformed(evt);
}
});
jMenu4.add(maum);
mdis.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK
_SUBTRACT, 0));
mdis.setText("DISMINUIR");
mdis.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
mdisActionPerformed(evt);
}
});
jMenu4.add(mdis);
mher.add(jMenu4);
jMenu5.setText("GROSOR");
mgr1.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.V
K_1, 0));
buttonGroup1.add(mgr1);
mgr1.setSelected(true);
mgr1.setText("1 PTO");
mgr1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
mgr1ActionPerformed(evt);
}
});
jMenu5.add(mgr1);
mg3.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK
_2, 0));
buttonGroup1.add(mg3);
mg3.setText("3 PTO");
mg3.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
mg3ActionPerformed(evt);
}
});
jMenu5.add(mg3);
mgr6.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.V
K_3, 0));
buttonGroup1.add(mgr6);
mgr6.setText("6 PTO");
mgr6.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
mgr6ActionPerformed(evt);
}
});
jMenu5.add(mgr6);
mher.add(jMenu5);
jMenu6.setText("ESTILO");
mesv.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.V
K_4, 0));
buttonGroup2.add(mesv);
mesv.setText("VERTICE");
mesv.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
mesvActionPerformed(evt);
}
});
jMenu6.add(mesv);
meli.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK
_5, 0));
buttonGroup2.add(meli);
meli.setSelected(true);
meli.setText("LINEAL");
meli.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
meliActionPerformed(evt);
}
});
jMenu6.add(meli);
mesr.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK
_6, 0));
buttonGroup2.add(mesr);
mesr.setText("RELLENO");
mesr.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
mesrActionPerformed(evt);
}
});
jMenu6.add(mesr);
mher.add(jMenu6);
menuFigura.add(mher);
mtra.setText("TRASLADAR");
mizq.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.V
K_LEFT, 0));
mizq.setText("IZQUIERDA");
mizq.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
mizqActionPerformed(evt);
}
});
mtra.add(mizq);
mder.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.V
K_RIGHT, 0));
mder.setText("DERECHA");
mder.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
mderActionPerformed(evt);
}
});
mtra.add(mder);
marr.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK
_UP, 0));
marr.setText("ARRIBA");
marr.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
marrActionPerformed(evt);
}
});
mtra.add(marr);
maba.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.V
K_DOWN, 0));
maba.setText("ABAJO");
maba.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
mabaActionPerformed(evt);
}
});
mtra.add(maba);
matr.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK
_DELETE, 0));
matr.setText("ATRAS");
matr.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
matrActionPerformed(evt);
}
});
mtra.add(matr);
made.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.V
K_END, 0));
made.setText("ADELANTE");
made.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
madeActionPerformed(evt);
}
});
mtra.add(made);
menuFigura.add(mtra);
mrot.setText("ROTAR");
mrizq.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.V
K_A, 0));
mrizq.setText("ROTAR IZQUIERDA");
mrizq.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
mrizqActionPerformed(evt);
}
});
mrot.add(mrizq);
mrder.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.V
K_D, 0));
mrder.setText("ROTAR DERECHA");
mrder.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
mrderActionPerformed(evt);
}
});
mrot.add(mrder);
mrarr.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.V
K_W, 0));
mrarr.setText("ROTAR ARRIBA");
mrarr.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
mrarrActionPerformed(evt);
}
});
mrot.add(mrarr);
mraba.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.V
K_S, 0));
mraba.setText("ROTAR ABAJO");
mraba.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
mrabaActionPerformed(evt);
}
});
mrot.add(mraba);
jMenuItem5.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyE
vent.VK_Q, 0));
jMenuItem5.setText("ROTAR ATRAS");
jMenuItem5.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jMenuItem5ActionPerformed(evt);
}
});
mrot.add(jMenuItem5);
jMenuItem6.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyE
vent.VK_E, 0));
jMenuItem6.setText("ROTAR ADELANTE");
jMenuItem6.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jMenuItem6ActionPerformed(evt);
}
});
mrot.add(jMenuItem6);
menuFigura.add(mrot);
jMenuBar1.add(menuFigura);
setJMenuBar(jMenuBar1);
pack();
}// </editor-fold>
//variable de operacion
int opc=0;
float vcr=1,vcg=0,vcb=0;
float vgr=4.0f;
int estilo=1;
boolean activo=true;
GL gl = drawable.getGL();
GLU glu = new GLU();
//Matriz identidad
gl.glLoadIdentity();
gl.glColor3f(1, 1, 0);
gl.glBegin(GL.GL_LINES);
gl.glVertex3f(0, 1.f,0);
gl.glVertex3f(0, 0,0);
gl.glEnd();
gl.glBegin(GL.GL_LINES);
gl.glVertex3f(0,0,0);
gl.glVertex3f(1.f,0,0);
gl.glEnd();
gl.glBegin(GL.GL_LINES);
gl.glVertex3f(0,0,0);
gl.glVertex3f(-1.f,-1.f,0);
gl.glEnd();
//Definimos el color
gl.glColor3f(vcr, vcg, vcb);
if(opc==0)
{
gl.glBegin(GL.GL_POLYGON);
for(int i=0;i<100;i++)
{
float x = (float)Math.cos(i*2*Math.PI/100);
float y = (float)Math.sin(i*2*Math.PI/100);
gl.glVertex3f(0.2f*x, 0.2f*y,0);
}
gl.glEnd();
}
else
{
if(opc==1)
{
if(activo)
{
limpiarVariables();
activo=false;
}
gl.glBegin(GL.GL_LINES);
gl.glVertex3f(0, .25f,0);
gl.glVertex3f(0, -.25f,0);
gl.glEnd();
}
else
{
if(opc==2)
{
if(activo)
{
limpiarVariables();
activo=false;
}
gl.glBegin(GL.GL_TRIANGLES);
gl.glVertex3f(0, .25f,0);
gl.glVertex3f(-.25f, -.25f,0);
gl.glVertex3f(.25f, -.25f,0);
gl.glEnd();
}
else
{
if(opc==3)
{
if(activo)
{
limpiarVariables();
activo=false;
}
gl.glBegin(GL.GL_QUADS);
gl.glVertex3f(-.25f, -.25f,0);
gl.glVertex3f(.25f,-.25f,0);
gl.glVertex3f(.25f, .25f,0);
gl.glVertex3f(-.25f,.25f,0);
gl.glEnd();
}
else
{
if(opc==4)
{
if(activo)
{
limpiarVariables();
activo=false;
}
gl.glBegin(GL.GL_QUADS);
gl.glVertex3f(-.25f, -.5f,0);
gl.glVertex3f(.25f,-.5f,0);
gl.glVertex3f(.25f, .5f,0);
gl.glVertex3f(-.25f,.5f,0);
gl.glEnd();
}
else
{
if(activo)
{
limpiarVariables();
activo=false;
}
gl.glBegin(GL.GL_POLYGON);
gl.glVertex3f(-.25f,-.5f,0);
gl.glVertex3f(.25f,-.5f,0);
gl.glVertex3f(.5f,0,0);
gl.glVertex3f(.25f,.5f,0);
gl.glVertex3f(-.25f,.5f,0);
gl.glVertex3f(-.5f,0,0);
gl.glEnd();
}
}
}
}
}
gl.glFlush();
}
public void reshape(GLAutoDrawable drawable, int x, int y, int width, int height) {
GL gl = drawable.getGL();
GLU glu = new GLU();
if(height<=0)
{
height=1;
}
float h= (float)width/ (float)height;
}
}
RESULTADOS DE LA APLICACIÓN