Hola amigos de "Buenas Intenciones", en esta le explicare como hacer el cubo de Rubik utilizando las libreria de OpenGL, que es una libreria para graficos por computadora un poco mas avanzada donde utilizaremos codigo en java 3D, con textura, movimientos de cámara, traslación, rotación.
Primero veamos que es OpenGL proporciona una biblioteca básica de funciones para especificar primitivas gráficas, atributos, transformaciones geométricas, transformaciones de visualización y muchas otras operaciones.
Los nombres de las funciones de la biblioteca básica de OpenGL (también llamada de biblioteca del núcleo
de OpenGL) utilizan como prefijo g l , y cada palabra que forma parte del nombre de una función tiene su
primera letra en mayúscula. Los siguientes ejemplos ilustran este convenio de denominación.
glBegin, glClear, glCopyPixels, glPolygonMode
Bueno sin mas que decir empezamos analizando el codigo linea por linea.
NOTA: Todo el codigo es en una sola clase y esta dividido en fragmentos para facilitar el entendimiento.
//Archivo: Rubik.java
//Autor: Ivan Gallardo
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.GLEventListener;
import javax.media.opengl.glu.GLU;
import javax.swing.JFrame;
import com.sun.opengl.util.GLUT;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.io.File;
import com.sun.opengl.util.texture.Texture;
import com.sun.opengl.util.texture.TextureIO;
import java.io.IOException;
public class Rubik extends JFrame implements KeyListener{
static GL gl;
static GLU glu;
static GLUT glut;
static GLCanvas canvas;
private static float rotarX=0;
private static float rotarY=0;
private static float rotarZ=0;
private static float trasladaX=0;
private static float trasladaY=0;
private static float trasladaZ=0;
private Texture cara1, cara2,cara3,cara4, cara5,cara6;
private static float EscaX=1.0f;
private static float EscaY=1.0f;
private static float EscaZ=1.0f;
private static float EscaXm=1.0f;
private static float EscaYm=1.0f;
private static float EscaZm=1.0f;
static float rojo=0.0f;
static float verde=0.0f;
static float azul=0.0f;
Bueno de la linea de comando 3 a la 16 son las librerias necesarias para los diferentes metodos que