Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. package Figuras;
  2.  
  3. import com.sun.opengl.util.Animator;
  4. import com.sun.opengl.util.GLUT;
  5. import java.awt.Frame;
  6. import java.awt.event.WindowAdapter;
  7. import java.awt.event.WindowEvent;
  8. import javax.media.opengl.GL;
  9. import javax.media.opengl.GLAutoDrawable;
  10. import javax.media.opengl.GLCanvas;
  11. import javax.media.opengl.GLEventListener;
  12. import javax.media.opengl.glu.GLU;
  13.  
  14. /**
  15.  * TestOpenGL
  16.  * author: Rafa Gallardo
  17.  *
  18.  */
  19. public class dibujaTriangulos implements GLEventListener {
  20.     public static final double Pi = 3.14159265358979323846;
  21.     public static Math math;
  22.    
  23.     public static void main(String[] args) {
  24.         Frame frame = new Frame("OpenGl Graficos");
  25.         GLCanvas canvas = new GLCanvas();
  26.  
  27.         canvas.addGLEventListener(new dibujaTriangulos());
  28.         frame.add(canvas);
  29.         frame.setSize(640, 550);
  30.         final Animator animator = new Animator(canvas);
  31.         frame.addWindowListener(new WindowAdapter() {
  32.  
  33.             @Override
  34.             public void windowClosing(WindowEvent e) {
  35. //                Ejecutar este en otro hilo de la cola de eventos AWT para
  36. //                asegúrese de que la llamada a Animator.stop () finaliza antes de
  37. //                salir
  38.                 new Thread(new Runnable() {
  39.  
  40.                     public void run() {
  41.                         animator.stop();
  42.                         System.exit(0);
  43.                     }
  44.                 }).start();
  45.             }
  46.         });
  47.         //Centrar Frame
  48.         frame.setLocationRelativeTo(null);
  49.         frame.setVisible(true);
  50.         animator.start();
  51.     }
  52.  
  53.    
  54.    
  55.    
  56.  
  57.     public void init(GLAutoDrawable drawable) {
  58.         display(drawable);
  59.        
  60.         GL gl = drawable.getGL();
  61.         System.err.println("INIT GL IS: " + gl.getClass().getName());
  62.  
  63.         //Enable VSync
  64.         gl.setSwapInterval(1);
  65.  
  66.         //Setup the drawing area and shading mode
  67.         gl.glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
  68.         gl.glShadeModel(GL.GL_SMOOTH); // try setting this to GL_FLAT and see what happens.
  69.        
  70.         float angle_x = (float)0.5;
  71.         float angle_y = (float)0.5;
  72.        
  73.     }
  74.  
  75.     public void reshape(GLAutoDrawable drawable, int x, int y, int width, int height) {
  76.         GL gl = drawable.getGL();
  77.         GLU glu = new GLU();
  78.  
  79.         if (height <= 0) { // avoid a divide by zero error!
  80.             height = 1;
  81.         }
  82.        
  83.         final float h = (float) width / (float) height;
  84.         gl.glViewport(0, 0, width, height);
  85.         gl.glMatrixMode(GL.GL_PROJECTION);
  86.         gl.glLoadIdentity();
  87.         glu.gluPerspective(45.0f, h, 1.0, 20.0);
  88.         gl.glMatrixMode(GL.GL_MODELVIEW);
  89.         gl.glLoadIdentity();
  90.     }
  91.  
  92.     public void display(GLAutoDrawable drawable) {
  93.         GL gl = drawable.getGL();
  94.         GLUT glut = new GLUT();
  95.         GLU glu = new GLU();
  96.        
  97.        
  98.         //Clear the drawing area
  99.         gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT);
  100.         //Reset the current matrix to the "identity"
  101.         gl.glLoadIdentity();
  102.         gl.glColor3f(1.0f, 1.0f, 0.0f);
  103.         gl.glTranslatef(0.0f, 0.0f, -6.0f);
  104.         dibujarTriangulo(drawable);
  105.        
  106.         gl.glColor3f(0.0f, 1.0f, 1.0f);
  107.         gl.glRotatef(180.0f, 0.0f, 0.0f, 0.0f);
  108.         gl.glScalef(0.5f, 0.5f, 0.5f);
  109.         dibujarTriangulo(drawable);
  110.        
  111.         gl.glColor3f(1.0f, 0.0f, 1.0f);
  112.         gl.glRotatef(180.0f, 0.0f, 0.0f, 0.0f);
  113.         gl.glScalef(0.6f, 0.6f, 0.6f);
  114.         dibujarTriangulo(drawable);
  115.        
  116.         gl.glFlush();
  117.        
  118.         //dibujo ojo derecho
  119.         gl.glTranslatef(2.0f, 2.0f, -6.0f);
  120.         gl.glColor3f(1.0f, 0.0f, 0.0f);
  121.         dibujarCircunferencia(drawable);
  122.        
  123.         //Dibuja ojo izquierdo
  124.         gl.glTranslatef(-4.1f, 0.0f, 0.0f);
  125.         gl.glColor3f(1.0f, 0.0f, 0.0f);
  126.         dibujarCircunferencia(drawable);
  127.        
  128.         //Dibuja puntos alrededor del ojo izquierdo
  129.         gl.glPointSize(5);//Establece tamano de los puntos
  130.         gl.glColor3f(0.5f, 0.4f, 0.8f);
  131.         gl.glBegin(gl.GL_POINTS);
  132.             for(float angul = 0.0f; angul<2*Pi; angul +=0.1){
  133.                 float x = (float) ((float) 1.5*Math.sin(angul));
  134.                 float y = (float) ((float) 1.5*Math.cos(angul));
  135.                 gl.glVertex2f(x,y);
  136.             }
  137.         gl.glEnd();
  138.         gl.glFlush();
  139.        
  140.        
  141.        //Dibuja patas!
  142.        gl.glTranslatef(-4.0f, -10.0f, 0.0f);
  143.        gl.glRotatef(180.0f, 0.0f, 0.0f, 0.0f);
  144.        dibujarTriangulo(drawable);
  145.        
  146.        gl.glTranslatef(-12.0f, 0.0f, 0.0f);
  147.        dibujarTriangulo(drawable);
  148.        
  149.     }
  150.    
  151.     private void dibujarTriangulo(GLAutoDrawable drawable){
  152.         GL gl = drawable.getGL();
  153.        
  154.         gl.glBegin(gl.GL_TRIANGLES);
  155.             //Establece los vertices del triangulo
  156.             gl.glVertex3f(-2.5f, -2.0f, 0.0f);
  157.             gl.glVertex3f(2.5f, -2.0f, 0.0f);
  158.             gl.glVertex3f(0.0f, 2.0f, 0.0f);
  159.         gl.glEnd();
  160.     }
  161.    
  162.     private void dibujarCircunferencia(GLAutoDrawable drawable){
  163.         GL gl = drawable.getGL();
  164.        
  165.          gl.glBegin(gl.GL_POLYGON);
  166.             for(int i=0; i<100; i++){
  167.                float x = (float) Math.cos(i*2*Pi/100);
  168.                float y = (float) Math.sin(i*2*Pi/100);
  169.                gl.glVertex2f(x, y);
  170.             }
  171.         gl.glEnd();
  172.         gl.glFlush();
  173.     }
  174.    
  175.    
  176.  
  177.     public void displayChanged(GLAutoDrawable drawable, boolean modeChanged, boolean deviceChanged) {
  178.     }
  179. }