Documente Academic
Documente Profesional
Documente Cultură
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