Java 3D
Java 3D
Transformaciones
Geométricas
Transformaciones Básicas
Rotación
Eje X.
Eje Y.
Eje Z.
Traslación
Cambio de tamaño o de Escala.
Transform3D
Transform3D, es la clase de Java3D, que genera objetos para calcular, transforma‐
ciones geométricas del tipo desplazamiento, rotación y cambio de tamaño.
p q
Los métodos para calcular las transformaciones básicas que vienen con Transform3D son:
• rotX
• rotY
• rotZ
• setTranslation
tT l ti
• setScale
Rotaciones Eje Z
rotZ
• rotX(double angulo) rotY
• rotY(double angulo)
Eje Y
• rotZ(double angulo) rotX
Eje X
• Los
Los ángulos se deben introducir en radianes.
ángulos se deben introducir en radianes
• Java cuenta con los métodos estáticos de la
clase Math, tales como sin, con, toRadians, Transform3D t3D = new Transform3D();
toDegree y otros. [Link]([Link](45)
• Para facilitar la introducción de argumentos
en los métodos de rotación, se aconseja
introducirlos en grados y transformarlos con
toRadians.
• Ejemplo: 45 grados.
• Utilizar [Link](45)
Traslaciones
El método para traslaciones es setTranslation.
Se requiere de la utilización de vectores para poder determinar los desplaza‐
mientos
setTranslation (Vector3d desplazamiento)
setTranslation(Vector3f desplazamiento)
Vector3d y Vector3f, son vectores de componentes X,
Y y Z ppero de double y simple p p precisión respec‐
p
tivamente.
Ejemplo, calcular
Ejemplo, calcular el desplazamiento
el desplazamiento de 3 unidades
de 3 unidades según el eje
el eje z y 2 según
z y 2 según el eje
el eje Z.
• Crear el vector desplazamiento
Vector3D vectorDesplazamiento = new Vector3d(0.0,3.0,2.0)
• Crear el objeto Transform3D
T
Transform3D
f 3D traslacion
t l i = new Transform3D()
T f 3D()
Aplicar el cálculo de tranlación
[Link](vectorDesplazamiento)
Cambio de tamaño (homeostasis)
setScale(double factorDeEscala)
Con el método setScale podemos cambiar el tamáño de los objetos.
• Si el factor de escala es menor que 1,
1 se disminuiria el tamaño de los
objetos, si es mayor que uno, se aumentaria proporcionalmente.
Ejemplo
Cálculos para la duplicación del tamaño de los objetos.
double factorDeEscala = 2.0;
Transform3D t3d = new Transform3D();
[Link](factorDeEscala);
Realizando las transformaciones
TG: TransformGroup
Transform3D cálcula las transformaciones.
TG TransformGroup realiza las transformaciones con el método:
setTransform
public void setTransform(Transform3D transformación)
public void setTransform(Transform3D transformación)
//Ejemplo rotar un ColorCube
un ColorCube 60 grados, según
60 grados según el eje
el eje Y.
Y
ColorCube cuboDeColor = new ColorCube(0.25);
TransformGroup tg = new TransformGroup();
[Link](cuboDeColor);
Transform3D t3D = new Transform3D();
[Link]([Link](60.0));
[Link](t3D);
Shape3D
Combinando las transformaciones
Las transformaciones rotX, rotY, rotZ, setScale y setTranslation, son transfor‐
maciones no acumulativas, es decir si un objeto Transform3D, calcula 1ro
una transformación
f ió ded rotación
ió y luego
l otra de
d cambiabi de
d escala,l la
l última
úl i
transformación es la que queda.
La combinación
La combinación de transformaciones, vienen
de transformaciones vienen
dados por algunos métodos que incluye
Transform3D
mul: para multiplicar transformaciones.
add: para sumar matrices.
sub: para restar matrices.
sub:
Transform3D y matrices 4x4
⎛ m00 m01 m01 m03 ⎞ ⎛ x ⎞ ⎛ x' ⎞
⎜ ⎟ ⎜ ⎟ ⎜ ⎟
⎜ m10 m11 m12 m13 ⎟ ⎜ y ⎟ ⎜ y ' ⎟
⎜m ∗ =
m21 m22 m23 ⎟ ⎜ z ⎟ ⎜ z ' ⎟
⎜ 20 ⎟ ⎜ ⎟ ⎜ ⎟
⎜m ⎟ ⎜ ⎟ ⎜
m33 ⎠ ⎝ w ⎠ ⎝ w' ⎠⎟
⎝ 30 m31 m32
El proceso
El proceso de transformaciones
de transformaciones geométricas de rotación, traslación
de rotación, traslación y escalamiento, es
y escalamiento, es
realizado a traves de matrices 4x4.
Los objetos
j Transform3D, son operadores
, p de matrices 4x4
Transform3D y las matrices de transformación
geométrica
ét i
Los objetos Transform3D, le evitan al programador extensos
y complicados calculos matriciales, estos son sustituidos por
métodos tales como
tales como rotX, rotY, rotZ, setScale, mul, add, sub,
rotX rotY rotZ setScale mul add sub
transpose, etc…….
Al
Alguno métodos
ét d de Transform3D, que
d T f 3D realizan
li operaciones
i matriciales
t i i l útiles:
útil
traspose
Para transponer, invertir matrices y ajustar a la matrix
inverse id id d
identidad.
setIdentity
Transform3D y el punto de vista
Transform3D tiene algunos métodos de
transformación matricial que nos serán útiles a la
hora de cambial el punto
de cambial el punto de vista aplicado
de vista aplicado a una
a una
escena gráfica.
lookAt
frustrum
void lookAt(Point3d posiciónOjo Point3d posiciónDelBlanco, Vector3d direcciónArriba)