Class Pieza

java.lang.Object
  extended by Pieza
All Implemented Interfaces:
java.lang.Comparable<Pieza>

public class Pieza
extends java.lang.Object
implements java.lang.Comparable<Pieza>

Un cubo que representa una de las piezas del cubo rubik completo. Contiene informacion de la ubicacion espacial de sus ocho vertices y sus caras.


Field Summary
private  Cara3D[] cara
          Arreglo con las 12 Cara3D (dos triangulos por cada cara cuadrada).
private  Ejes3D eje
          Determina la orientacion de la Pieza (rotaciones).
private  Point3D[] vertice
          Arreglo con los ocho vertices del cubo que representa esta Pieza.
private static Point3D vista
          Punto desde donde son vistas las piezas por el observador (la camara).
 
Constructor Summary
  Pieza(int x, int y, int z, int a, int i, int f, int d, int t, int b)
          Crea e inicializa una Pieza.
private Pieza(Point3D[] ve, Cara3D[] ca, Ejes3D ej)
          Usado por clone().
 
Method Summary
 void ajustar()
          Invoca el metodo 'ajustar()' de los ejes de esta pieza y luego normaliza esta pieza.
 Pieza clone()
          Crea una copia de esta Pieza.
 int compareTo(Pieza otra)
          Compara la distancia de las piezas respecto a la camara, la mas lejana va primero.
 Cara3D[] getCaraArray()
          Retorna el arraglo de caras de esta Pieza.
 Point3D getCentro()
          Retorna un Point3D que indica el punto central de esta pieza en el espacio 3D.
 Ejes3D getEjes()
          Retorna los ejes de esta Pieza.
 Point3D[] getVerticeArray()
          Retorna el arraglo de vertices de esta Pieza.
 void normalizar()
          Rota esta pieza para hacer que sus ejes coincidan con los ejes canonicos.
 void resetEjes()
          Devuelve los ejes de la pieza a sus orientaciones canonicas.
 void rotar_X(float giro)
          Rota los ejes de esta Pieza sobre el eje X.
 void rotar_Y(float giro)
          Rota los ejes de esta Pieza sobre el eje Y.
 void rotar_Z(float giro)
          Rota los ejes de esta Pieza sobre el eje Z.
static void setVista(Point3D _v)
          Cambia la referencia punto desde donde son vistas las Piezas.
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

vista

private static Point3D vista
Punto desde donde son vistas las piezas por el observador (la camara).


vertice

private Point3D[] vertice
Arreglo con los ocho vertices del cubo que representa esta Pieza.


cara

private Cara3D[] cara
Arreglo con las 12 Cara3D (dos triangulos por cada cara cuadrada).


eje

private Ejes3D eje
Determina la orientacion de la Pieza (rotaciones).

Constructor Detail

Pieza

public Pieza(int x,
             int y,
             int z,
             int a,
             int i,
             int f,
             int d,
             int t,
             int b)
Crea e inicializa una Pieza.

Parameters:
x - posicion en x
y - posicion en y
z - posicion en z
a - color de la cara que mira arriba
i - color de la cara que mira izquieda
f - color de la cara que mira frente
d - color de la cara que mira derecha
t - color de la cara que mira atras
b - color de la cara que mira abajo

Pieza

private Pieza(Point3D[] ve,
              Cara3D[] ca,
              Ejes3D ej)
Usado por clone().

Method Detail

setVista

public static void setVista(Point3D _v)
Cambia la referencia punto desde donde son vistas las Piezas.

Parameters:
_v - Nuevo punto de vista.

getVerticeArray

public Point3D[] getVerticeArray()
Retorna el arraglo de vertices de esta Pieza.

Returns:
El arraglo de vertices de esta Pieza.

getCaraArray

public Cara3D[] getCaraArray()
Retorna el arraglo de caras de esta Pieza.

Returns:
El arraglo de caras de esta Pieza.

getEjes

public Ejes3D getEjes()
Retorna los ejes de esta Pieza.

Returns:
Los ejes de esta Pieza.

getCentro

public Point3D getCentro()
Retorna un Point3D que indica el punto central de esta pieza en el espacio 3D.

Returns:
Un Point3D que indica el punto central de esta pieza en el espacio 3D.

rotar_X

public void rotar_X(float giro)
Rota los ejes de esta Pieza sobre el eje X.

Parameters:
giro - grados del giro en sentido horario.

rotar_Y

public void rotar_Y(float giro)
Rota los ejes de esta Pieza sobre el eje Y.

Parameters:
giro - grados del giro en sentido horario.

rotar_Z

public void rotar_Z(float giro)
Rota los ejes de esta Pieza sobre el eje Z.

Parameters:
giro - grados del giro en sentido horario.

normalizar

public void normalizar()
Rota esta pieza para hacer que sus ejes coincidan con los ejes canonicos.


ajustar

public void ajustar()
Invoca el metodo 'ajustar()' de los ejes de esta pieza y luego normaliza esta pieza. Sirve para evitar que se acumulen errores en los giros de la Pieza. Por ejemplo despues de hacer muchos giros de 90 grados, se iran acumulando errores por el redondeo a float, que harian que despues de muchos giros, las piezas se vean chuecas.


resetEjes

public void resetEjes()
Devuelve los ejes de la pieza a sus orientaciones canonicas.


clone

public Pieza clone()
Crea una copia de esta Pieza.

Overrides:
clone in class java.lang.Object
Returns:
Una copia de esta Pieza.

compareTo

public int compareTo(Pieza otra)
Compara la distancia de las piezas respecto a la camara, la mas lejana va primero.

Specified by:
compareTo in interface java.lang.Comparable<Pieza>