Integración de la velocidad y posición

Anuncio
VIDEOJUEGOS 2
Integración de la velocidad y posición
V2
Integración de velocidad y posición
Puntos a tratar
•
•
•
•
•
•
•
•
Integración de posición y velocidad lineal
Discretización del tiempo
Fuerzas
Impulsos
Cuerpos rígidos
Representación de la orientación y quaternions
Integración de la orientación y la velocidad angular
Torque y tensor de inercia
Videojuegos II
© 2014-2015 Depto. Ciencia de la Computación e IA
Integración
2
V2
2.1 Integración
de la
Integración
de velocidad y posición
posición y de la velocidad
Siendo p la posición de una partı́cula, v su velocidad y a su aceleración,
cada iteración del juego deberemos actualizar velocidad y posición de la
Elenintegrador
siguiente forma:
• El integrador es el núcleo del motor
2
t
p0 = p + v t + a
(1)
v
1
t
2
vt0
• Consta de dos partes:
0
a
v
= vobjetos
+a t
(2)
• Actualización de la posición de los
• Actualización
de la velocidad
de los
objetos
Esto lo realizará
una parte del
motor
de fı́sicas aque se conoce como in-
tegrador. El integrador recibirá como entrada el tiempo transcurrido desde
la última un
actualización
t (delta para
time)actualizar
y realizará
la actualización
de todas
• Requiere
intervalo de tiempo
estos
valores
las
partı́culas
del
mundo
mediante
las
anteriores
ecuaciones.
• Utilizaremos el delta time de nuestro ciclo del juego
Es importante realizar la actualización de la posición primero, y tras ello
• Debemos acotar este valor, una caída del frame rate es peligrosa
actualizar la velocidad. Consideremos que estamos haciendo la integración
entre los instantes ti y ti+1 ( t = ti+1 ti ). Para la integración de la posición
durante este perı́odo, deberemos tener en cuenta la velocidad en el instante
2
t
,
y
la
aceleración
durante
t.
El
término
0.5a
t
refleja
cambio adicional
• Vamos
i
a considerar un escenario sencillo en el que
sólo elinterviene
la
de posición
se habrá
producido
al cambio gradual de velocidad
fuerza
de la que
gravedad
y los
cuerpos debido
son partículas
entre ti y ti+1 . En algunos motores veremos que el integrador se implementa
Videojuegos IIforma:© 2014-2015 Depto. Ciencia de la Computación e IA
Integración
3
de la siguiente
p0 = p + v t + a
V2
Integración de velocidad y posición
2
v0 = v + a t
(1)
(2)
2.1
Integración
departe
la posición
de laquevelocidad
Esto
lo realizará una
del motor dey fı́sicas
se conoce como integrador.
El integrador
recibirá
como entrada
el tiempo ytranscurrido
desde
Siendo
p la posición
de una
partı́cula,
v su velocidad
a su aceleración,
la última actualización t (delta time) y realizará la actualización de todas
en cada iteración del juego deberemos actualizar velocidad y posición de la
las partı́culas del mundo mediante las anteriores ecuaciones.
siguiente forma:
La integración
se hace
dela la
siguiente
Es importante
realizar
actualización
de laforma:
posición primero, y tras ello
actualizar la velocidad. Consideremos que estamos
haciendo la integración
t2
0
p t+i+1v ti ).
+a
(1)
entre los instantes ti1y ti+1 p( =
t=
Para la integración de la posición
2
durante este perı́odo, deberemos tener en cuenta la velocidad en el instante
ti , y la aceleración durante t. El
término 0.5a t2 refleja el cambio adicional
0
2
v =v+a t
(2)
de posición que se habrá producido debido al cambio gradual de velocidad
entre
ti+1 . En algunos
motores
veremos
el integrador
se implementa
Estotiloy realizará
una parte
del motor
deque
fı́sicas
que se conoce
como indemotores
la siguiente
forma:
Algunos
utilizanrecibirá
la siguiente
forma
equivalente
tegrador.
El integrador
como entrada
el tiempo
transcurrido desde
Integración de posición y velocidad
•
•
• Se
la última actualización t (delta time) y realizará la actualización de todas
t
v lasv anteriores
+a
(3)
1
las partı́culas del mundo
mediante
ecuaciones.
2
Es importante realizar la actualización de la posición primero, y tras ello
actualizar la velocidad.
haciendo la integración
p
p +que
v estamos
t
(4)
2 Consideremos
entre los instantes ti y ti+1 ( t = ti+1 ti ). Para la integración de la posición
durante este perı́odo, deberemos tener en cuenta
la velocidad en el instante
t
3
v término
v + a 0.5a t2 refleja el cambio adicional
(5)
ti , y la aceleración durante t. El
2
de posición
se habráque
producido
debido al cambio
gradualade
Es fácilque
comprobar
esta implementación
es equivalente
la velocidad
anterior,
entre
ti+1 . En algunos
veremos que el integrador se implementa
si enti 4ysustituimos
v 0 por motores
3.
de la Las
siguiente
forma:
ecuaciones
anteriores consideran
una aceleración
a constante
supone
una
aceleración
constante
durante
el deltadurante
time
t. Sin embargo, la aceleración normalmente cambiará en el tiempo por
t
lo que la simulación será correcta
v sólo
v + si
a t ! 0. Es decir, es importante
(3)
2
mantener siempre una frecuencia alta de actualización
de la simulación fı́sica.
Videojuegos II
© 2014-2015 Depto.
de la tComputación e IA
p Ciencia
p+v
(4)
Integración
4
V2
Integración de velocidad y posición
Problemas de la discretización del tiempo (I)
• La simulación se hace con una discretización del tiempo
• El resultado obtenido será dependiente del delta time
• Un delta time demasiado elevado puede hacer que un objeto
atraviese otro (tunneling)
• Se hace un brusco cambio en la posición y en ningún momento
llegan a solaparse los objetos, por lo que no colisionan
• Es importante limitar el valor máximo del delta time
pt
pt
0
vt
0
1
vt
1
• A pesar de limitar el mayor máximo, si el frame rate fuese variable
podríamos tener resultados no deterministas
Videojuegos II
© 2014-2015 Depto. Ciencia de la Computación e IA
Integración
5
V2
Integración de velocidad y posición
2.1
Integración de la posición y de la velocidad
Problemas
de
la dediscretización
tiempo (II)
Siendo p la
posición
una partı́cula, v su velocidad del
y a su aceleración,
• Ejemplo
en cada iteración del juego deberemos actualizar velocidad y posición de la
siguiente forma:
2
2
t
aceleración
de
100
m/s
a
p =p+v t+a
2
• Queremos aplicar una
un cuerpo en
(1) reposo
durante un instante puntual de
ms de duración
2.110Integración
de la posición y de la velocidad
v0 = el
vp+cuerpo
t
Siendo
laa posición
de una partı́cula,
su (2)
velocidad y a su aceleraci
•
Según
las
ecuaciones
anteriores
alcanzará
una vvelocidad
2.1 Integración de la posición y de la velocidad
0
en cada iteración del juego deberemos actualizar velocidad y posición de
m
m
Siendo p la posición de una partı́cula,
velocidad
yma+forma:
su100
aceleración,
siguiente
vt1 =v vsu
+
a
t
=
0
·
0.01s
=
1
(3)
t0
2
en cada iteración del juego deberemos actualizar velocidad
de la
s y posición
s
s
t2
0
siguiente forma:
Esto lo realizará una parte del motor de fı́sicas que pse=conoce
p + v como
t + a in2
El integrador
recibirá
como
entrada
el
tiempo
transcurrido
desde
• Comotegrador.
el tiempo
está discretizado,
aunque
el
tiempo
en
el
que
se aplique
2
t
la última
actualización
(deltaeltime)
y realizará
la aceleración
actualización
de
todas
0
p0 =
p + vmenor
t + a tque
(1)
la aceleración
sea
delta
time,
la
se
v
=
v
+
a
t aplicará
2
las partı́culas del mundo mediante las anteriores ecuaciones.
durante toda
la0 iteración.
Consideramos
dos
casos
Es importante
realizar
la
actualización
de
la
posición
primero,
ello
m y trasm
m
v =v+a t
(2)
vt1 = vt0 + a t = 0 + 100 2 · 0.01s = 1
actualizar la velocidad. Consideremos que estamos haciendo lasintegración
s fps
s
El motor
se ejecuta a 60 fps
El motor se ejecuta a 30
entre los instantes
de la posición m
m ti y ti+1
m ( t = ti+1m ti ). Para la integración
m
vt1 delta
=
vt0 +time
a este
t=
0 de+16.67
100deberemos
· 0.01s
=tener
1 60)en cuenta
(3)
v
=time
100 2es
·en
0.01667s
= 1.667
t1velocidad
2
El
esperı́odo,
ms
(1
/
El
delta
de
33.33
mss (1 / 30)
durante
la
el
instante
s
s
s
s
ti , y la aceleración durante t. El término 0.5a t2 refleja el cambio adicional
m
m
m
m
v
=
100
·
0.01667s
=
1.667
(4)
de tposición
que
se
habrá
producido
debido
al
cambio
gradual
de
velocidad
v
=
100
·
0.03333s
=
3.333
1
t1
s2
s
s2
s
entre ti y ti+1 . En algunos motores veremos que el integrador se implementa
m forma:
m Esto lo realizará una parte del motor de fı́sicas que se conoce como
devtla=siguiente
100 · 0.03333s = 3.333
(5)
tegrador.
integrador
recibirá como entrada el tiempo transcurrido de
• Cuanto mayors2delta time, mayor
errorElpor
la discretización
s
1
la última actualización
t como in- t (delta time) y realizará la actualización de tod
Esto lo realizará una parte del motor de fı́sicas que
se
conoce
v partı́culas
v + a del mundo mediante las anteriores
(4) ecuaciones.
las
2
tegrador. El integrador recibirá como entrada el tiempo transcurrido desde
EsCiencia
importante
realizar la actualización de la posición
primero, y6 tras e
Videojuegos
II
2014-2015 Depto.
de la Computación
Integración
la última actualización
t (delta
time) y© realizará
la actualización
de todas e IA
actualizar la velocidad. Consideremos que estamos haciendo la integrac
V2
Integración de velocidad y posición
Determinismo
• Mantener una simulación física determinista es importante
• Juego en red: Los efectos de la física en las distintas máquinas de la
red deben ser idénticos
• Repetición de jugadas: Un cambio en el frame rate durante la
repetición podría cambiar los efectos de la física
• Para conseguir que el resultado sea determinista el delta time
debería ser constante
• Solución
• Mantener delta time constante en físicas independientemente del
frame rate real
Unity
Bullet
Utilizamos el método FixedUpdate
para las físicas, que funciona a frecuencia fija.
Videojuegos II
Las físicas se ejecutan siempre a
60fps (por defecto). Esto lo gestiona
el propio motor.
© 2014-2015 Depto. Ciencia de la Computación e IA
Integración
7
de velocidad y posición
V22.2Integración
Fuerzas
Siguiendo la segunda ley de Newton, la fuerza que se debe aplicar sobre un
Fuerzas
objeto para producir una determinada aceleración se calcula de la siguiente
forma:
• La aceleración es el resultado de aplicación de una fuerza
f = ma
(9)
Sin embargo, en nuestro motor de fı́sicas lo que realmente nos interesa es
• Lo que
nos interesa
realmente
aceleración
a partir
de
conocer
la aceleración
producida
trascalcular
aplicar es
unala fuerza,
calculada
como:
la fuerza
1
a= f
(10)
5m
Podemos ver que aquı́ multiplicamos la fuerza por la inversa de la masa.
•Dado
Normalmente
el motor
almacena
masa
inversa
de los la
objetos,
que este cálculo
es frecuente,
parala
evitar
tener
que calcular
inversa en
en momento,
lugar de laserá
masa,
ya que esalmacenar
lo que selautiliza
habitualmente
cada
recomendable
masa inversa
de los cuerpos,
en •lugar
de almacenar
la omasa.
Un cuerpo
estático
cinemática tiene masa infinita (o masa inversa
Almacenar
masa inversa
tiene una ventaja importante. Para hacer que
cero), y laslafuerzas
no le afectan
un cuerpo sea estático (que no se vea afectado por las fuerzas que sobre él
se ejerzan) lo que haremos es dar a ese cuerpo masa infinita. Este valor
infinito podrı́a crear dificultades en el código, y la necesidad de tratar casos
especiales. Si trabajamos únicamente con masa inversa, bastará con darle un
Videojuegos II
© 2014-2015 Depto. Ciencia de la Computación e IA
Integración
valor 0 a la masa inversa para hacer el cuerpo estático.
8
an) lo que haremos es dar a ese cuerpo masa infinita. Este valor
Integración
de velocidad
y posición
podrı́a
dificultades
en el código,
y la necesidad de tratar casos
V2 crear
es. Si trabajamos únicamente con masa inversa, bastará con darle un
a la masa inversa para hacer el cuerpo estático.
Principio
de actuarán
D’Alembert
malmente
sobre un cuerpo
varias fuerzas. Siguiendo el prinD’Alembert, un conjunto de fuerzas F = {f1 , f2 , ...f|F | } actuando
• pueden
Aplicarser
distintas
fuerzas
sobre
un fuerza
objetocalculada
es equivalente
n objeto
sustituidas
por una
única
como a aplicar
de las fuerzas
de F :fuerza calculada como la suma de todas ellas
una única
f=
|F |
X
i=1
fi
f3
f1
f2
f
(11)
ello, cada objeto contará con un acumulador de fuerzas f donde se
Pondremos
unque
acumulador
cada objeto en el
mando •todas
las fuerzas
actúan sobrede
él fuerzas
(gravedad,para
interacción
motor
os objetos,
suelo, etc). Cuando llegue el momento de realizar la intela aceleración
objeto se calculará
a partir de
la fuerza
indique
• La del
acumulación
debe realizarse
antes
de laque
integración
umulador f .
• Deberemos borrar los acumuladores tras cada iteración
fuerza que aplicaremos normalmente a los objetos es la fuerza de la
d
Box2D
oner a cero el acumulador. En muchos motores de fı́sicas enDebemos llamar al método clearForces tras cada iteración para
ntraremos métodos para borrar todas las fuerzas acumuladas en
limpiar los acumuladores de fuerzas.
s objetos. Por ejemplo, Box2D tiene un método clearForces
e deberemos llamar antes de realizar cada actualización del
Videojuegos II
2014-2015 Depto. Ciencia de la Computación e IA
undo para que ponga
a 0 todos ©los
acumuladores de fuerzas de
Integración
9
V2
Integración de velocidad y posición
Ejemplos de fuerzas
si la aceleración producida se extiende a todo el t el incremento de veloci•
Gravedad
si la aceleración
producida
se extiende
a todo
el t el incremento
de velocidad producido
puede ser
desmesurado.
Por este motivo,
estas fuerzas que se
dad producido
puede
Por este
motivo,
secomo de
aplican
en un breveproducida
instante
puntual
de aestas
tiempo
impulsos.
siser
la desmesurado.
aceleración
se
extiende
todo fuerzas
else ttratarán
el que
incremento
veloci• El mundo
tiene
una
gravedad
general
El
más
de
fuerza
aplicada
acomo
los motivo,
objetos
es la
lafuerzas
gravedad.
Si
aplican en un breve instante
puntual
de tiempo
se tratarán
impulsos.
dad
producido
puede
ser
Pora
este
estas
que seSi
El caso
caso
más común
común
de desmesurado.
fuerza
aplicada
los
objetos
es
gravedad.
queremos
hacer
una
simulación
realista
deberı́amos
aplicar
una impulsos.
fuerza que
que objetos
aplican
en
un breve
instante
de deberı́amos
tiempo
se tratarán
El caso
común
de fuerza
aplicada
agravedad
lospuntual
objetos
es
la gravedad.
Sicomo
• más
queremos
hacer
una
simulación
realista
aplicar
una
fuerza
Es útil
poder
aplicar
una
especial
a
determinados
m
m
produzca
una
aceleración
de
a
=
9.8
sobre
nuestra
partı́cula Sien
en
El
caso
más
común
de
fuerza
aplicada
a
los
objetos
es la gravedad.
gravedad
queremos hacer una
simulación
realista
deberı́amos
aplicar
una
fuerzanuestra
que
produzca una aceleración de agravedad = 9.8 ss22 sobre
partı́cula
m
m2 ).una
m
el
eje
y
(normalmente
se
redondea
en
a
=
10
Considerando
queremos
hacer
una
simulación
realista
deberı́amos
aplicar
fuerza que
gravedad
s2en
el eje y de
(normalmente
redondea
en
a
=
10
).
Considerando
produzca una aceleración
agravedad = se 9.8
sobre
nuestra
partı́cula
gravedad
2
s
s
m
produzca
una
aceleración
de
a
=
9.8
a
=
(0,
a
,
0),
tenemos:
m
gravedad
2 sobre nuestra partı́cula en
gravedad
gravedad
s
agravedad
(0, agravedad
tenemos:
el eje y (normalmente
se =
redondea
en , a0),
= 10 s2 ). Considerando
gravedad
el eje y (normalmente se redondea en agravedad = 10 sm2 ). Considerando
agravedad = (0, agravedada, 0), tenemos:
Aproximación
(12) utilizada
Valor gravedad
real = (0, agravedad , 0),fftenemos:
gravedad = agravedad m
=
a
m
(12)
gravedad
gravedad
habitualmente
También
se
puede
tratar
como
una
fuerza
la
”resistencia
al
aire”
(dampf
=
a
m
(12)
gravedad
gravedadcomo
fgravedad
=a
(12)
También
se puede tratar
una
fuerza
lam”resistencia al aire” (dampgravedad
ing) que produce que los objetos vayan frenando y no se muevan indefinida•
Resistencia
al
aire
ing)tratar
que
produce
que(drag)
lostratar
objetos
vayan
frenando
y no(dampse muevan
indefinidaTambién se puede
como
una
fuerza
lacomo
”resistencia
También
se
puede
una esta
fuerzaal
laaire”
”resistencia
al aire”
(damp-en
mente. Un modelo simplificado
para
fuerza
que se suele
utilizar
mente.
Unproduce
modelo
simplificado
para
esta
fuerza
quese se
suele indefinidautilizar en
ing)
que
que
los
objetos
vayan
frenando
y
no
muevan
ing) que produce
que
los
objetos
vayan
frenando
y
no
se
muevan
indefinidavideojuegos
es
el
siguiente:
• Fuerza
que hace
que
el objetopara
se esta
frene
videojuegos
es
el
siguiente:
mente.
Un
modelo
simplificado
fuerza
que se en
suele utilizar en
mente. Un modelo simplificado para esta fuerza que se suele
utilizar
• Actúa
en la
videojuegos
es el siguiente:
dirección del movimiento
Constante de drag 1
videojuegos es el siguiente:
fresistencia = v̂(k1 |v| + k2 |v|22 )
(13)
fresistencia = v̂(k1 |v| + k2 |v| )
(13)
Donde k1 y k2 son dosfresistencia
constantes
=2 que
v̂(k1caracterizan
|v| + k2 |v|2 ) la fuerza, y v̂ el vector
(13)
Donde
k
y
k
son
dos
constantes
que
caracterizan
la
fuerza,
y
v̂
el
vector
1 normalizado
2
resistencia
1 (vector
2 unitario con la dirección de la velocidad).
velocidad
= v̂(k |v| + k |v| )
(13)
de f
Donde
knormalizado
dos(vector
constantes
que
caracterizan
la fuerza,
y v̂velocidad).
el vector
1 y k2lason
de velocidad
unitario
con la opuesto
dirección
de
la
Podemos
ver
que
fuerza
actúa
en
el
sentido
a
la
velocidad
del
Donde k1 y k2 sonde
dos
constantes
que caracterizan
la fuerza,
y v̂dirección
el vector
velocidad
normalizado
(vector
unitario
con
la
de
la
velocidad).
Podemos
que yla con
fuerza
actúa
en el proporcional
sentido opuesto
la velocidad
del
objeto
(lo ver
frena),
una
magnitud
a laa velocidad
y ade
su drag 2
Constante
Vector
unitario
en
la
de velocidad normalizado
(vector
unitario
con
la
dirección
de
la
velocidad).
Podemos
ver quey la
fuerza actúa
en elproporcional
sentido opuesto
la velocidad
objeto
(lo Cuando
frena),
a laa velocidad
y adelsu
cuadrado.
k2con
seauna
alto,magnitud
la resistencia
crecerá rápidamente
conforme
más
Podemos ver que cuadrado.
la
fuerza (lo
actúa
enkyelcon
sentido
opuesto proporcional
a la velocidad
del
dirección
del
movimiento
objeto
frena),
una magnitud
a la(afecta
velocidad
y aalsuir rápido)
aumente la Cuando
velocidad.
2 sea alto, la resistencia crecerá rápidamente conforme
cuadrado.
Cuando k2proporcional
sea alto, la resistencia
crecerá rápidamente
conforme
objeto (lo frena), aumente
y con
una
magnitud
a la velocidad
y a su
la velocidad.
la velocidad.
cuadrado. Cuando k2aumente
sea alto,
la resistencia crecerá rápidamente conforme
2.3
aumente la velocidad.
Impulsos © 2014-2015 Depto. Ciencia de la Computación e IA
Videojuegos II
Integración
10
V2
Integración de velocidad y posición
Fuerzas instantáneas
• Aplicar una gran fuerza un breve instante de tiempo es
problemático debido a la discretización del tiempo
• Existen casos en los que necesitamos fuerzas instantáneas
• Golpeamos un objeto
• Damos un salto
• Disparamos una bala
• Solución
• Utilizar impulsos
• Un impulso produce un cambio instantáneo de velocidad
Videojuegos II
© 2014-2015 Depto. Ciencia de la Computación e IA
Integración
11
r los impulsos respecto a la velocidad, como vemos a las fuerzas
Integración de velocidad y posición
V2
a aceleración. Si aplicar una fuerza a un cuerpo produce una
aplicar un impulso produce un cambio de velocidad. Una difertanteImpulsos
es que no puede haber aceleración si no se aplica ninguna
tras que si que puede haber velocidad si no se aplican impulsos,
El impulso
es cambio
a la velocidad
lo que la fuerza
a la aceleración
lo que• provoca
es un
en la velocidad.
El impulso
g neceroducir un
masaque nos interesará
• Alcambio
aplicar de
fuerza
se que
produce
una proporcional
aceleración
Alvelocidad
igual
envelserá
caso
de
las fuerzas, a
el la
cálculo
la impulso
obtenciónse
delproduce
cambio un
de cambio
velocidadde
a partir
del impulso:
• Al aplicaresun
velocidad
1
v =que gnos interesará
m dev las fuerzas, el cálculo
(14)
Al igual que en gel =
caso
realizar
m
es la obtención delConsiderando
cambio de velocidad
a v,partir
del
impulso:
= v 0que
v es
a laque
apl
Al vigual
endonde
el caso
delalasvelocidad
fuerzas, previa
el cálculo
0
del impulso, yesvla
esobtención
la velocidad
cambio de tenemos:
velocidad a partir del im
1 del resultante,
• IMPORTANTE: No
v = g si no se ejerce fuerza, pero(15)
7 existe aceleración
m
1
si que puede existir velocidad sin impulso.
El impulso
no produce
1
0
v =v+ g
g
0
velocidad, sinovun
de velocidad
Considerando
= vcambio
v, donde
v es la velocidadmprevia va =la m
aplicación
0
del• impulso,
y
v
es el
la cambio
velocidad
resultante,
Considerando
v = v 0 v, ,donde
v es la velocidad
Considerando
de
velocidad tenemos:
tenemos
2.4
Aplicaciones
en
balı́stica
del impulso, y v 0 es la velocidad resultante, tenemos:
1
v ahora
= v +podrı́amos
g
(16) sim
Con los visto hasta
implementar un motor para
1
m
0
balı́stica. En este caso tendrı́amos lo siguiente:v = v + g
m
0
2.4
Aplicaciones
en balı́stica
• Una bala
serı́a una partı́cula con una determinada masa.
2.4 Aplicaciones en balı́stica
Videojuegos II
© 2014-2015 Depto. Ciencia de la Computación e IA
Integración
12
V2
Integración de velocidad y posición
Balística (I)
• Una aplicación del motor de partículas es la balística
• Una bala de 5g se mueve a 500m/s
A 60fps cada iteración son 16.7ms
Recorrerá 500 m/s· 0.0167s = 8.35m
• No llega a verse en pantalla
• No merece la pena simularlo, mejor trazar un rayo
• Si queremos que la simulación se vea debemos bajar la velocidad
• Por ejemplo, bajamos a 50m/s
• Para que la bala siga haciendo el mismo efecto, deberemos
aumentar su masa
Videojuegos II
© 2014-2015 Depto. Ciencia de la Computación e IA
Integración
13
V2
fuerza aplicada en un breve instante de tiempo.
Integración Teniendo
de velocidad
posición
en ycuenta
que
5g normalmente se mueve a una
• La bala estarı́a
sometida
a la una
fuerzabala
de la de
gravedad
velocidad de 500m/s, si nuestro juego funciona a 60f ps cada iteración la
Teniendo en cuenta que una bala de 5g normalmente se mueve a una
bala
avanzará
8, 33m.
Es decir,
veremos
la cada
bala.iteración
En este
velocidad
de 500m/s,
si nuestro
juego no
funciona
a 60f ps
la caso no tiene
sentido
realizar
la simulación,
paraEsesto
esnomás
conveniente
trazar un rayo y
bala avanzará
8, 33m
en cada iteración.
decir,
veremos
la bala. En
este caso no dónde
tiene sentido
realizar la simulación, para esto es más conveniente
comprobar
impacta.
trazartener
un rayola
y comprobar
dónde impacta.
• Buscamos
misma
energía
cinética
bajandobajar
velocidad
y
SiSi queremos
que
la
bala
se
muestre
deberemos
su
velocidad,
pero
queremos que la bala se muestre, deberemos bajar su velocidad, pero
aumentando
masa
esto
consecuencias.
Por ejemplo,
si labajamos
velocidad
a 50m/s y
estotraerá
traerá
consecuencias.
Por ejemplo,
si bajamos
velocidad la
a 50m/s
y
2 1
2
queremos que
(e =(e
mv=
) del
impacto
la mismasea
quela
cuando
queremos
quelalaenergı́a
energı́a
mv
) delsea
impacto
misma que cuando
2
a 500m/s, deberemos incrementar su masa 100 veces (en nuestro ejemplo
ibaiba
a
500m/s,
deberemos
incrementar
su
masa
100
veces como:
(en nuestro ejemplo
500g).
Con
carácter
general,
la
masa
corregida
de
la
bala
se
calcuları́a
• La nueva
masa
por la
lo masa
tantocorregida de la bala se calcuları́a como:
500g).
Con deberá
carácter ser
general,
✓
◆2
vreal
✓
◆2
mcorregida = mreal
(17)
vreducida
vreal
mcorregida
(14)
real
Esto tiene otra consecuencia,
y es =
quemal
moverse más lentamente la
vreducida
gravedad
hará
que
caiga
más
cerca.
Si
queremos
que
la trayectoria
• Si reducimos a 50m/s, deberemos aumentar recorra
la masa
a 500g
que
habrı́a
seguido
en
caso
de
ir
a
500m/s,
entonces
tendrı́amos
que
Esto tiene otra consecuencia, y es que al moversereducir
más lentamente la
la lento
gravedady en
la misma
proporción
en lalaque
disminuyo lahará
• Al ir más
tener
masa
gravedad
caiga
gravedad
hará
que mayor
caiga
más
cerca.
Si
queremosgravedad:
queque
recorra
la trayectoria
queque
habrı́a
seguido
caso de ir8reducida
a 500m/s,
entonces
que reducir
• Habrá
aplicar
unaen
gravedad
para
que notendrı́amos
caiga
la gravedad
en la misma proporción en la que disminuyo la velocidad:
demasiado
rápido
Balística (II)
vreducida
agravedad bala =
avgravedad
reducida
vreal=
agravedad bala
agravedad
(18)
(15)
vreal
•
Es decir, tendrı́amos que aplicar una gravedad de 1m/s2 a la bala. Para
2
2
Es
decir,
tendrı́amos
que
aplicar
una
gravedad
de
1m/s
aa la bala. Para
esto
nos
será
útil
que
el
motor
nos
permita
aplicar
una
gravedad
diferente
En nuestro caso, la gravedad será de 1m/s
cada
estocuerpo.
nos será útil que el motor nos permita aplicar una gravedad diferente a
cada
cuerpo.
Videojuegos
II
© 2014-2015 Depto. Ciencia de la Computación e IA
Integración
14
V2
Integración de velocidad y posición
Cuerpos rígidos
• Los cuerpos rígidos se diferencian de las partículas en que tienen
forma, y por lo tanto pueden ser rotados
• Orientación: Estado de un cuerpo
• Rotación: Cambio de la orientación
• Además, hay que determinar un punto de referencia para
posicionar el cuerpo
• Será conveniente utilizar su centro de masas como referencia
• El centro de masas de un cuerpo se comporta como una partícula
• Todo lo visto para partículas se puede aplicar a este punto
Videojuegos II
© 2014-2015 Depto. Ciencia de la Computación e IA
Integración
15
V2
Integración de velocidad y posición
Orientación
• La representación de la orientación 3D no es trivial
• En 2D es sencillo, sólo necesitamos un ángulo
• Debería cumplir:
• Ser compacta y sencilla
• Ser fácil de construir y de tratar
• Poder interpolar dos orientaciones
• Encontramos diferentes opciones
•
•
•
•
Ángulos de Euler
Ángulo y eje
Matrices de rotación
Quaternions
Videojuegos II
© 2014-2015 Depto. Ciencia de la Computación e IA
Integración
16
V2
Integración de velocidad y posición
Ángulos de Euler
• Se especifican los ángulos de rotación en los ejes x, y, z
• Por ejemplo, rotar 90º el eje x, 90º el y, y 0º el z
• El resultado es dependiente de la ordenación
• No es igual rotar en orden (z, y, x) que (x, y, z)
• Gimbal lock
• En un sistema mecánico este sistema puede bloquearse
• En un programa no se bloquea, pero produce problemas para
interpolar
Videojuegos II
© 2014-2015 Depto. Ciencia de la Computación e IA
Integración
17
V2
Integración de velocidad y posición
Gimbal lock (I)
• Ejemplo 1
• Queremos rotar el avión de la siguiente forma:
• Suponemos la ordenación x, y, z
Videojuegos II
© 2014-2015 Depto. Ciencia de la Computación e IA
Integración
18
V2
Integración de velocidad y posición
Gimbal lock (II)
• Primer intento
Rotar
0º en X
Rotar
90º en Y
El eje Z del avión se ha alineado
con el eje X del mundo, pero ya
no podemos rotar en X, ya que
esa fase ya pasó
Videojuegos II
© 2014-2015 Depto. Ciencia de la Computación e IA
Integración
19
V2
Integración de velocidad y posición
Gimbal lock (III)
• Solución
Rotar
90º en X
Rotar
0º en Y
Conseguimos el resultado
deseado, pero no es trivial
obtener los 3 ángulos
necesarios. La interpolación
podría también producir
efectos no deseados.
Interpolación al 50%
Rotar
90º en Z
Videojuegos II
© 2014-2015 Depto. Ciencia de la Computación e IA
Integración
20
V2
Integración de velocidad y posición
Gimbal lock (IV)
• Ejemplo 2
• Queremos rotar el avión de la siguiente forma:
• Suponemos la ordenación x, y, z
• En este caso aplicamos los giros sobre los ejes locales del objeto
Videojuegos II
© 2014-2015 Depto. Ciencia de la Computación e IA
Integración
21
V2
Integración de velocidad y posición
Gimbal lock (V)
• Primer intento
Rotar
45º en X
Rotar
90º en Y
Rotando en el eje local Z del
avión no conseguiremos el
ángulo buscado
Videojuegos II
© 2014-2015 Depto. Ciencia de la Computación e IA
Integración
22
V2
Integración de velocidad y posición
Gimbal lock (VI)
• Solución
Rotar
90º en X
Rotar
45º en Y
Rotar
90º en Z
Videojuegos II
© 2014-2015 Depto. Ciencia de la Computación e IA
Integración
23
V2
Integración de velocidad y posición
Eje y ángulo
• Una forma más sencilla es especificar un eje y un ángulo de
rotación alrededor de dicho eje
• En este caso necesitamos especificar el eje (x, y, z) y el ángulo θ
• Deberemos llevar cuidado de mantener el ángulo en (-π, π]
• Es difícil combinar varias rotaciones si cambia el eje
Videojuegos II
© 2014-2015 Depto. Ciencia de la Computación e IA
Integración
24
V2
orientación, deberemos comprobar que el ángulo se encuentre entre ( ⇡, ⇡],
Integración de velocidad y posición
pero cuando se trate de una velocidad angular esto no será necesario. Sin embargo, esta forma de representar la orientación no deja claro cómo combinar
varias rotaciones, ya que cambiará tanto el ángulo como el eje de rotación.
Si buscamos una forma sencilla de combinar rotaciones, podemos utilizar
matrices de rotación 3 ⇥ 3. Una rotación de ✓ alrededor de un eje (x, y, z)
puede serconstruir
representada
matricialmente
• Es posible
una
matriz decomo:
rotación a partir del eje y el
Matriz de rotación
2
•
•
•
2
ángulo
3
(1 cos ✓)x + cos ✓ (1 cos ✓)xy z sin ✓ (1 cos ✓)xz + y sin ✓
⇥ = 4 (1 cos ✓)xy + z sin ✓ (1 cos ✓)y 2 + cos ✓ (1 cos ✓)yz x sin ✓ 5
(1 cos ✓)xz y sin ✓ (1 cos ✓)yz + x sin ✓ (1 cos ✓)z 2 + cos ✓
(19)
Podemos se
combinar
rotaciones
mediante la multiplicación
ma- a
• La rotación
aplicafácilmente
mediante
premultiplicación
con el vector
tricial. Además, al especificarse la rotación siempre mediante sin y cos no
hará falta comprobar que el valor de ✓ esté entre los lı́mites ( ⇡, ⇡].
El mayor inconveniente de estas matrices es el alto número de coeficientes
No hace
falta mantener el ángulo en (-π, π]
(9) que debemos manejar. Una forma más compacta (4 coeficientes) y que
ventajas
anteriores
son losinnecesario
llamados quaternions (ver Anexo A
• Alreúne
usarlas
seno
y coseno
se hace
para más información).
Fácil de
rotaciones
Uncombinar
quaternion nos
permite representar una rotación ✓ alrededor de un
eje (x, y, z)premultiplicación
mediante los siguientes
coeficientes:
• Mediante
matricial
2
3
✓
cos 2
Tiene demasiados coeficientes
6 x sin ✓ 7
2 7
q=6
(20)
• Es difícil de manejar
4 y sin ✓ 5
2
✓
z sin 2
3.2
Videojuegos II
2014-2015 Depto. Ciencia de la Computación e IA
Posición de© un
punto
rotar
Integración
25
(19)
de combinar
velocidad yfácilmente
posición rotaciones mediante la multiplicación maV2 Integración
Podemos
tricial. Además, al especificarse la rotación siempre mediante sin y cos no
hará falta comprobar que el valor de ✓ esté entre los lı́mites ( ⇡, ⇡].
Quaternions
El mayor inconveniente de estas matrices es el alto número de coeficientes
(9) que debemos manejar. Una forma más compacta (4 coeficientes) y que
• reúne
La forma
más adecuada
representar
rotaciones
es mediante
las ventajas
anterioresdeson
los llamados
quaternions
(ver Anexo A
quaternions
para
más información).
quaternion
permite
representar
alrededor de un
• LaUn
rotación
de unnos
ángulo
θ alrededor
deluna
ejerotación
x, y, z se✓ representa
eje
(x, y, z) 4
mediante
los siguientes coeficientes:
mediante
coeficientes
2
3
✓
cos 2
6 x sin ✓ 7
2 7
q=6
(20)
4 y sin ✓ 5
2
z sin 2✓
• 3.2
Esta representación
las características buscadas
Posición de reúne
un punto
• Permite
combinar
rotaciones
Dado
un cuerpo,
cuyo centro
de masas está posicionado en p0 y con rotación
Es compacto
(sólo 4 coeficientes)
⇥•(matriz
de transformación
3 ⇥ 3, puede interesarnos determinar la posición
de• cualquier
otro punto en el mundo. Supongamos que queremos conocer la
Fácil de interpolar
posición
un punto comprobar
cuyas coordenadas
locales esté
(respecto
centro
• No esdenecesario
que el ángulo
entreal(-π,
π] de masas)
son plocal . La posición global de dicho punto vendrá determinada por:
Videojuegos II
© 2014-2015 Depto. Ciencia de la Computación e IA
10
Integración
26
V2
diferentes i, j, y k. Un quaternion se define como:
Integración de velocidad y posición
z = a + bi
(57)
q = r + xi + yj + zk
de tenemos una de
parte
real a y una
parte compleja
b queestructura
se multiplica
almacenar
la información,
enEluna
dedefinirse
4 coeficientes.
a R4 :
quaternion puede
como unaVamos
tupı́a en
úmero imaginario
i. En unlos
quaternion
tenemos
3 números
fundamentos
de este
tipo estructura
deimaginarios
estructuras.
deestudiar
almacenar
la información,
en
una
de 4 coeficientes.
2 3 Vamos a
es i, j, y k. Un
quaternion
sever
define
como:
r complePodemos
los quaternions
unaestructuras.
extensión de los números
estudiar
los fundamentos
de este como
tipo de
6 x 7
jos.
Un número
complejo
se representa
como:
Podemos
ver los
quaternions
como una
extensión de los
números
6 7 compleq
=
4 y los
5 números
• Podemos
los
quaternions
como una(58)
extensión de
q = ver
r + xi
+ yj
+ zk
jos. Un número complejo se representa como:
z
(57)
uaternion complejos
puede definirse como una tupı́a en R4 : z = a + bi
Podemos
considerar el quaternion como
la suma de un e
2 3una parte real
z a=yauna
+también
biparte compleja
(57)
Donde tenemos
b que se multiplica
r
un vector:
por el número6imaginario
i.
En
un quaternion tenemos 3 números imaginarios
7una parte real
x
Donde
tenemos
a ytenemos
una parte 3
compleja
b quediferentes
se multiplicai, j, k
6
7
• En lugar
de
un
único
número
i,
números
q
=
(59)
diferentes i, j,4 yy k.5 Un quaternion se define como:q = r + xi + yj + zk = (r, v)
por el número imaginario
i. En un quaternion tenemos 3 números imaginarios
diferentes i, j, y zk. Un quaternion
se
como:
de+los
siguientes reglas:
q = El
r +álgebra
xidefine
+ yj
zkquaternions se basa en las (58)
emos también considerar el quaternion como la suma de un escalar y
2R4 : 2
El
quaternion
puede
definirse
como
una
tupı́a
en
i
= j = k 2 = ijk = 1(58)
or:
q = r + xi + yj + zk
2 reglas
3 se deriva lo siguiente:
• Se define
el
siguiente
álgebra
De
estas
runa tupı́a en R4 :
El
quaternion
puede
definirse
como
q = r + xi + yj + zk = (r, v)
(60)
6 x 7
2
3
6 7
ijk(k) = ( 1)(k) ! ij (59)
=k
q
=
4
5
gebra de los quaternions se basa en las siguientes
reglas:
rderiva
de donde
sey
(i)ijk = (i)( 1) ! jk = i
6 zx 7
(i)ij = (i)k ! ik = j
6 7
2
2
2
q
=
i = j = k = ijk = 1
(61) ij(j) = k(j) ! kj =(59)
4 y 5
Podemos también considerar el quaternion como la suma de un escalar y i
(j)jk = (j)i ! ji = k
z
stas reglas se deriva
lo siguiente:
un vector:
ji(i) = k(i) ! ki = j
Podemos
también
el quaternion como la suma de un escalar y
ijk(k)
= ( 1)(k)
! considerar
ij = k
q = r + Hay
xi +que
yj +
zk = (r,
v)el producto no es conmutativo.
(60)
destacar
que
Podemos o
un(i)ijk
vector:
= (i)( 1) ! jk = i
que las
anteriores reglas:
guardan relación con las reglas del p
El(i)ij
álgebra
se basa
enreglas
las siguientes
= (i)kde los
! quaternions
ik = también
j
si interpretamos i, j y k como la base canónica del espacio
ij(j) = k(j) ! kjq = rvectorial,
i+ xi + yj
+ zk = (r, v)
(60)
2
Videojuegos II
© 2014-2015
la Computación
= Ciencia
k 2 =deijk
= 1 e IA
(61) Integración 27
(j)jk
= (j)i ! ji
=i2 =
k jDepto.
¿Qué un un quaternion?
El álgebra de los quaternions se basa en las siguientes reglas:
V2
= ade+estructuras.
bi
(57)
estudiar los fundamentos de este ztipo
de almacenar la información, en una estructura de 4 coeficientes. Vamos a
Podemos
ver
los quaternions
una
extensión de los números compleIntegración
de
velocidad
y posición
ijk(k)
=lostenemos
(fundamentos
1)(k)
!realcomo
ij
kestructuras.
Donde
una parte
a y=
una
parte compleja b que se multiplica
estudiar
de este
tipo
de
jos. Un número complejo se representa como:
por el
número
imaginario
i.!
En uncomo
quaternion
tenemos
números
imaginarios
Podemos
ver
los 1)
quaternions
unaiextensión
de3los
números
comple(i)ijk
= (i)(
jk
=
jos. Un número
se representa
diferentes
i, j, y complejo
k. Un quaternion
z =seadefine
+como:
bi como:
(57)
(i)ij = (i)k !del
ikquaternion
= j
Representaciones
• Se
Donde tenemos una parte
real
a=yxi
una
parte
a=
+ bi
(57)
q=
rzkj
+
yj
+
zkcompleja b que se multiplica
(58)
ij(j)
=
k(j)
!
i
por el número imaginario i. En un quaternion tenemos 3 números imaginarios
puede
representar
como
tupla
de
4encomponentes
Donde
tenemospuede
una parte
realuna
a y una
parte
compleja
4 b que se multiplica
El
quaternion
definirse
como
una
tupı́a
R
:
diferentes
i, j,=y k.
Un quaternion
se=
definekcomo:
(j)jk
(j)i
!
ji
por el número imaginario i. En un quaternion tenemos 3 números imaginarios
2 3
diferentes
i,
j,
y
k.
Un
quaternion
se
define
como:
ji(i) = k(i) !
ki
=
j
r
q = r + xi + yj + zk
(58)
6 x 7
7+tupı́a
4
=xi6
(59)
El quaternion puede definirse
como
una
q = r q+
+
yj
(58)
4 y 5 zk en R :
stacar que elElproducto
nodefinirse
es conmutativo.
observar
2 una
3 tupla en Podemos
quaternion puede
como
R4 :
z
r
2
3
6 xcon
7 las
s reglas anteriores
relación
reglas
del
producto
Podemos guardan
también considerar
el
quaternion
como
la
suma
de
un
escalar
6
7
q=4 r 5
(59) y
3
y 7
6canónica
un vector:
x
• Considerando
erpretamos
i, j y ki,como
base
del
espacio
R
.
j, k losla
vectores
de
la
base
canónica
de
7
q=6
(59)
4 yz 5
• Podemos
vertambién
el quaternion
como
lazkcombinación
unescalar
escalar
q = r + xi
yj z+
=como
(r, v)la sumade
(60)
Podemos
considerar
el+
quaternion
de un
y ry
ununvector
vector: v también considerar el quaternion como la suma de un escalar y
Podemos
El álgebra de los quaternions se basa en las siguientes reglas:
31
un vector:
j
q =2 r + xi
2 + yj
2 + zk = (r, v)
i = j = k = ijk = 1
q = r + xise
+ basa
yj + en
zk las
= (r,
v)
El álgebra de los quaternions
siguientes
reglas:
De estas reglas se deriva lo siguiente:
2
2
2
i = j = k = ijk =
1
v = xi + yj + zk
k
ijk(k) =
( 1)(k) ! ij = k
El
de lossequaternions
se basa
reglas:
Deálgebra
estas reglas
deriva
(i)ijklo=siguiente:
(i)(
1) en
!lasjksiguientes
=i
(i)ij2 = (i)k
! ik = j
2
2
ijk(k)
( =1)(k)
! =ij =1 k
i ij(j)
==jDepto.
k = deijk
= Ciencia
k(j)
!
kj = e IAi
Videojuegos II
© 2014-2015
la Computación
(i)ijk = (i)( 1) ! jk = i
(60)
(61)
(60)
i
(61)
(61)
(62) Integración
28
V2
q = (r,
! q =Considerando
(r, v)
(66)
La demostración de esta propiedad
esv)
sencilla.
p = (r1 , v1 )
Integración
velocidad y posición
y q = (r2 ,de
vDesde
un punto de vista espacial, podemos considerar el conjugado como
2 ), tenemos:
un ⇤quaternion
con dirección opuesta.
⇤
q p = (r2 , v2 )(r1 , v1 ) =
Una de las propiedades de la conjugación del producto de quaternions es:
= (r1 r2 v1 v2 , r2 v1 r1 v2 + ( v2 ) ⇥ (v1 ) =
(68)
A.1 Suma de quaternions
= (r1 r2 v1 v2 , r1 v2 r2 v⇤ 1 v⇤1 ⇤⇥ v2 = (pq)⇤
(pq) = q p
(67)
La
suma
de
dos
quaternions
se
define
como
la
suma
de
sus
componentes:
• Suma: se hace componente a componente
La demostración
de esta propiedad es sencilla. Considerando p = (r1 , v1 )
A.4 Norma
de un quaternion
y q = (r2 , v2 ), tenemos:
q1 +deq2un
= quaternion
(r1 + x1 i +qy=
++z1xi
k) +
+ yj
(r2++zk
x2 ise+ define
y2 j + zcomo:
1j s
2 k) =
La norma
= q ⇤(r
⇤1 + r2 ) + (x1 + x2 )i + (y1 + y2 )j + (z1 + z2 )k =
p
= (r
v2 )(r1 , v1 ) p
=
2 , quaternion
A.3 Conjugado
de
un
(63)
p
p
=||q||
(r1=
, v1 )s+
(r2x,2v+
⇤ =
⇤q
2)y2 + z2 =
qq
q
= 2(r+
r
v
v
,
r
v
r
v
+
( v2 ) ⇥ (v1 )(69)
=
(68)
1 2
1 2
2 1
1 2
= un(rquaternion
1 + r2 , v 1 + v
El conjugado de
se2 )v
define
como
unr quaternion
con
la (pq)
misma
⇤
=
(r
r
v
,
r
v
v
v
⇥
v
=
1
2
1
2
1
2
2
1
1
2
Para cualquier par de quaternions p y q, la norma es multiplicativa. Es
parte escalar, pero cuya parte vectorial cambia de signo:
decir:
Operaciones con quaternions
A.2 Producto de quaternions
• Conjugado
A.4 Normaq de
un
quaternion
⇤
=
(r,
v)
!
q
=multiplicación
(r, v)
(66)
Dadas las reglas de álgebra anteriores,
la
se
define
como:
||pq|| = ||p||||q||
(70)
de vista
un quaternion
q = s + xiconsiderar
+ yj + zkelseconjugado
define como:
DesdeLaunnorma
punto de
espacial, podemos
como
• Norma
qcon
(r1 + x1opuesta.
i +p
y1 j + z1 k)(r2 + x2 i + y2 j + z2 k) =
1 q2 =
un
quaternion
dirección
p ⇤ p ⇤
A.5 Inversa=der1 run
quaternion
2
2
2
2
+ r1=
x2 i +s r1+
y2xj ++r1yz2 k+
z = qqde=quaternions
q q
(69)
2||q||
Una de las propiedades
de la
conjugación
del+producto
es:
+x1 r2 i + se
x1 xdefine
2 ii + x
1 y2 ij + x1 z2 ik+
La inversaPara
de uncualquier
quaternion
como:
par de quaternions p y q, la norma es multiplicativa. Es
+y1 r2 j + y1 x2 ji⇤ + y1⇤y2⇤jj + x1 z2 jk+
• Inversa
(pq) = q p
(67)
decir:
+z1 r2 k + z1 x21ki + zq1⇤y2 kj + z1 z2 kk =
q = j +sencilla.
(71)
2
= de
r1 esta
r2 + rpropiedad
r
z
k+
La demostración
Considerando
p
=
(r
1 x2 i + r1 y2es
1
2
1 , v1 )
||q||
(70)
+x1 r2 i + x1 x2 ( 1)||pq||
+ x1=
y2 k||p||||q||
+ x1 z2 ( j)+
(64)
y q =Es(rfácil
), tenemos:
2 , v2comprobar
que la multiplicación de un quaternion por su inversa
+y1 r2 j + y1 x2 ( k) + y1 y2 ( 1) + x1 z2 i+
será 1.
⇤ ⇤
q
p =Inversa
(r2+z
, ©12014-2015
v
)(r
)+=z1dey2la(Computación
r22kde
+1z,un
i) + z1ezIA2 ( 1) =
1 xv
2 j1Ciencia
Videojuegos
II
Depto.
Integración 29
A.5
quaternion
De las propiedades mostradas en las ecuaciones 66 y 69 es fácil derivar
= (r r
xx
yy
z z )+
V2
A.2
Producto
de
quaternions
q1 + q2 = (r
1 + x1 i + y1 j + z1 k) + (r2 + x2 i + y2 j + z2 k) =
Integración de velocidad
yr posición
=
(r
+
(x + x
)i
+ (y21 +
+ xy22i)j++yse2(z
1
2 )x+
1++zz
2 )k
q
q
=
(r
+2multiplicación
z1 k)(r
jdefine
==
Dadas las reglas1de2 álgebra
anteriores,
como:
1+
1 i + 1y1 j la
2 k)
(63)
= =(r1r,1vr21 )++r1(rx22,iv+2 )r1 y2 j + r1 z2 k+
q1 q2 = =(r1(r+1+x
x11irr2+
x2 i +
+ yx21jz2+ik+
z2 k) =
+
, vy1j+
)k)(r
x+1v
xz221ii
+ 2x+
2i +
1 y2 ij
= r1 r2 +y
+ r11rx22ji +
+ ry11yx22jji++r1yz12yk+
2 jj + x1 z2 jk+
+x1 r+z
+
x x+2 iiz1+x2xki
ijz+
x1 z 2 +
ik+
2 i de
1 y2+
z1 z2 kk =
A.2 Producto
1 r2 k1quaternions
1 y2 kj
+y
y1 xdistributiva
x1el
z2 jk+
• Aplicando la propiedad
álgebra de quaternions
2 ji + y1 y2 jj + y
= 1 rr21jr+
2 + r1 x2 i + r1 y2 j + r1 z2 k+
Dadas las reglas+zde
álgebra 2anteriores,
la
multiplicación
se define como:
ki
+
z
y
kj
+
z
z
kk
=
1 r+x
2 k +r zi1 x
1
2
1
2
(64)
1 2 + x1 x2 ( 1) + x1 y2 k + x1 z2 ( j)+
= r1 r2 +y
+ r1rx2ji +
+ ry1 yx2 j( +k)
r1 z+2 k+
y12y2+( x1)
+ yx21jz2+i+z2 k) =
1
2
1
2
q1 q2 +x
= r(ri1++xx1xi (+ y1)1 j++xzy1 k)(r
i
+
2
(64)
1 +z
2
1+
2 z x j + 1z 2yk (+ x
1 z+
2 (z j)+
r
k
i)
z
(
1)
=
1
2
1
2
1
2
1
2
= rr1jr+
rx1 x(2 ik)
++
r1yy2yj +
r1)
2 +
1 z+
2 k+
+y
y
(
x1 z2 i+
1
2
1
2
1
2
= (r
r
x
x
y
y
z
z
)+
1 12r2 i +1x12x2 ii 1
2x1 y2 ij
1 2+ x1 z2 ik+
+x
+
+z1 r2 k + z1 x2 j + z1 y2 ( i) + z1 z2 ( 1) =
+(r11rx2 j2 +
x
r22 ji
++
y1yz12 y2 jj
z1+
y2 )i+
1x
+y
+
y
x1 z2 jk+
1
= (r1 r2 x1 x2 y1 y2 z1 z2 )+
+(r11ry2 k
+ y+1 rz21 y+2 kj
z1 x+2 )j+
2 +x
11z
22 ki
+z
z
x
+(r1 x2 + x1 r2 + y1 z2 z1 y2 )i+ z1 z2 kk =
+(r
z2 r+1 xx21iy+
y21jx2++r1zz12rk+
1+
2 r1 y
2 )k
=
r
r
1
2
+(r1 y2 x1 z2 + y1 r2 + z1 x2 )j+
+x
x x12x(2 quaternions
x1 y2 k +como
x1 z2 (la j)+
(64)
1 rx
2 i1 y+
Si expresamos
suma de escalar
y
+(r1el
z2 producto
+
+1)z+
2 1yde
1 r2 )k
del álgebra de
2 i+
vector, tenemos: +y1 r2 j + y1 x2 ( k) + y1 y2 ( 1) + x1 zRelación
Si expresamos el producto
dezquaternions
como
la
suma
de
escalar ycon el
quaternions
• Representación
mediante
escalar
y
vector
+z1 r2 k +
x
j
+
z
y
(
i)
+
z
z
(
1)
=
1 2
1 2
1 2
vector, tenemos: q=q (r
producto vectorial
x1v
x12)(r2y1+y2v2 ) z=
1 2 =1 r2(r1 +
1 z2 )+
(65)
=
(r
r
v
·
v
,
r
v
+
r
v
+
v
⇥
v
)
+(r+1 xv21 )(r
+
r21v+) y2=1 z21 2 z1 y22)i+
2 x1+
1
1
2
q1 q2 = (r
1
1
2
2
(65)
+(r
y
x
z
+
y
r
+
z
x
)j+
1
2
1
2
1
2
1
2
= (r1 r2 quev1ambas
· v2 , r1 vformas
v1 ⇥ v2 ) la multiplicación son
Es fácil comprobar
2 + r2 vde
1 + realizar
+(r1 z2 +que
x1 yen
x2 + zescalar
2 lay1parte
1 r2 )k
equivalentes.
Observamos
producto seson
tiene en
Es fácil comprobar que ambas formas de realizar la del
multiplicación
cuenta
el producto
escalar
de la
losde
vectores,
y en
la
partelavectorial
tiene eny
Si expresamos
el
producto
quaternions
como
suma
deseen
escalar
equivalentes.
Observamos
que
en
parte
escalar
del
producto
se
tiene
• ¡No
es
conmutativo!
cuenta
su
producto
vectorial.
vector,
tenemos:
cuenta
el producto
escalar
de los vectores, y en la parte vectorial se tiene en
cuenta su producto
vectorial. 2014-2015 Depto. Ciencia de la Computación e IA
VideojuegosqII q = ©
Integración
(r1 + v1 )(r2 + v2 ) =
1 2
(65)
Producto de quaternions
30
Desde un
deunvista
espacial,
podemos
considerar
el conjugado como
quaternion
con
dirección
opuesta.
unpunto
quaternion
con
dirección
opuesta.
velocidad
posición
quaternion
con dirección
opuesta.
conjugado
de
un
se define
un quaternion
con lade
misma
V2 ElIntegración
dequaternion
lasy propiedades
de lacomo
conjugación
del
producto
quaternio
Una
de de
lasUna
propiedades
de la conjugación
del producto
de quaternions
es:
Una de
las propiedades
de cuya
la conjugación
del producto
quaternions
es:
parte
escalar, pero
parte vectorial
cambiadede
signo:
⇤
⇤ ⇤
⇤
⇤ ⇤
(pq)
=
q
p
(pq)
=
q
p
(67)
⇤
⇤
⇤
Propiedades (pq)q == q(r,p v) ! q⇤ = (r, v)
(67)
La demostración
de estaespropiedad
es sencilla. Considerando
La demostración
de esta propiedad
sencilla. Considerando
p = (r1 , v1(66)
) p=(
La demostración
de
esta
propiedad es sencilla. Considerando p = (r1 , v1 )
y
q
=
(r
,
v
),
tenemos:
y
q
=
(r
, vproducto
), tenemos:
Desde
espacial,
podemos
considerar
el conjugado
como
2un 2punto
2de
2vista
•
El
conjugado
del
es
igual
al
producto
en
orden
inverso
= (r2 , v2 ), tenemos:
un de
quaternion
con dirección
opuesta.
los conjugados
⇤ ⇤
⇤
⇤
q p = (r
, v=
, 2 ,v1 )v=
q
v1 ) producto
=
2p
2 )(r1(r
2 )(r1 , del
⇤ Una
⇤
de
las
propiedades
de
la
conjugación
de quaternions es:
q p• Lo
= mismo
(r2 , vse
,
v
)
=
2 )(r
1
1
la
inversa
= aplica
(r1 r2 a =
v1 v
r2 v1v1 vr21,v2 r+2 v( 1 v2 )r1⇥v2 +
(v(1 ) =
(68)
2 , 1 r2
(r
v
)
⇥
(v
2
1) =
= (r1 r2 v1 v2 , r2 v1 r1 v2 + ( v2 ) ⇥ (v1 ) =
(68) ⇤
⇤
= (r1 r2 =
v1 v(r
,
r
v
r
v
v
⇥
v
=
(pq)
2 1 r2 1⇤ 2v1 v
2,⇤ 1 r1 v21
r
v
⇥
v
=
(pq)
⇤ 2 v21
⇤
2
1
2
= (r r
v v , r v
r v
v ⇥ v = (pq)
4
1 2
1 2
1 2
(pq) =1 q p
2 1
(67)
2
La demostración
de un
esta quaternion
propiedad
es sencilla. Considerando p = (r1 , v1 )
A.4
Norma
de
A.4
Norma
de
un
quaternion
Norma
de
un
quaternion
norma
equivalente a la raíz cuadrada del producto de un
y• qLa
= (r
, v ),es
tenemos:
2
2
La normaLadenorma
un quaternion
q = s + xi +q yj
+
zkxise+define
como:
de
un
quaternion
=
s
+
yj
+
zk se define como:
norma de
un
quaternion
q
=
s
+
xi
+
yj
+
zk
se
define
como:
quaternion por su conjugado
q ⇤ p⇤ p= (r2 , pv22)(r1 , 2 vp
p ⇤ p ⇤p
1 )2 = 2
p ⇤ (69)
p
p
||q|| 2= 2s ||q||
+x
+
y
+
z
=
qq
=
q
q
2
2
2
2
⇤
2
2
⇤
⇤
y (+ v
z 2 )=⇥ qq
||q|| = =
s +(rx1 r+
+1 vz2 ,= r2qq
=rx1 vq+
(69)
vs1 +
(v1=
) = q q (68)
2 y v
2 q+
⇤
Para
cualquier
par
de
quaternions
p
y
q,
la
norma
es
multiplicativa.
Es
=
(r
r
v
v
,
r
v
r
v
v
⇥
v
=
(pq)
1 2
2 q, de
2
2es1multiplicativa.
Para cualquier par dePara
quaternions
p1 ypar
la1 norma
Es es multiplicativ
cualquier
quaternions
p1 y q, la2 norma
• decir:
La norma es multiplicativa
ir:
5
A.4
decir:
Norma de un quaternion
||pq|| = ||p||||q||
||pq|| = ||p||||q||
(70)
||pq|| = ||p||||q||
La norma de un quaternion q = s + xi + yj + zk se define como:
A.5 de
Inversa
de p
un quaternion p
p
Inversa
un
quaternion
A.5 ||q||Inversa
quaternion
= s2 +de
x2 +un
y2 +
z 2 = qq ⇤ = q ⇤ q
Videojuegos II
© 2014-2015 Depto. Ciencia de la Computación e IA
de un quaternion
se define como:
inversaLa
deinversa
un quaternion
se define como:
(70)
(69)
Integración
31
B
V2
||pq||2
Integración de velocidad y posición
||q||2 ||p||2
Quaternions
de rotación
(pq) B de
q p rotación
Quaternions
(pq) =
=
=q p
(71)
⇤
1
⇤ ⇤
1
1
2 ||p||2
||q||
Quaternion||pq||
de2Unrotación
quaternion de rotación de un ángulo ✓ alrededor de un eje u = (u
x
define
forma polar
como:
n quaternion de rotaciónse de
unenángulo
✓ alrededor
de un eje u = (ux , uy , u
• Rotación
θ de
alrededor
del eje ux, uy, uz
Quaternions
rotación
define
en formadepolar
como:
q = e ✓(u i+u j+u k)
1
2
• Forma polar
x
y
z
quaternion de rotación de un ángulo
alrededor
de un
Esto✓ es
equivalente
a: eje u = (ux , uy , uz )
1
✓(ux i+uy j+uz k)
2
q
=
e
efine en forma polar como:
(7
1
1
q = cos ✓ + (ux i + uy j + uz k)sin ✓
1
2
2
Esto es equivalente
a:e 2 ✓(ux i+uy j+uz k)
q
=
(72)
• Equivale a
Es decir, los coeficientes de este quaternion serán:
Esto es equivalente a:
2
3 21
3
1
1
cos 2 ✓
q1 = cos ✓ + (ux i + uy1j + 6uzwxk)sin
✓
7 6 ux sin 1 ✓ 7
7 = 6 2 (73)12 7
q = cos ✓ + (ux i2+ uy j + uz k)sin ✓q = 6
4 y 5 4 uy sin ✓ 5
2
2
2
1
Es decir, los coeficientes de este quaternion zserán: uz sin 2 ✓
Es decir, los coeficientes de este quaternion serán:
(7
3 32
destacar que un3
quaternion de orientación siemp
3 Es2
2importante
1
wcos1.12 ✓
cos 2 ✓
w tener norma
1
6 x 7 Imaginemos
6 ux sin
76queremos rotar
1
que
el punto p = (px , py , pz ) = px i+py
6
7
7
✓
x
u
sin
✓
2
6
7
6
7
• Un quaternion
siempre
será
( ||q||=1
)
x unitario
q = 4de qrotación
=
(74)
2
6
7
6
7
1
5
4
5
obtendrá mediante
la operación de conjugación(7
d
=
y El=punto
urotado
✓se4
1
y sin
2
4
5
5
y
uy sin 2 ✓
z q:
uz sin 12 ✓
1
2
z
uz sin 2 ✓ 0
1
Es importante destacar que un quaternion de orientación siempre
p = qpq debe
er Es
norma
1.
Videojuegos
II
© que
2014-2015un
Depto. quaternion
Ciencia de la Computación e
IA
importante
destacar
de
orientación
siempre
de
Vamos a demostrar que la operación anterior realmente
realiza una
Integración
32
V2
2
3
2
3
y
2
1
uz sin 2 ✓
(74)
Integraciónwde velocidad
cosy12 ✓posición
6 x 7 6 ux sin 1 ✓ 7
2 7
7=6
q=6
1
4 y 5 4 uy sin ✓ 5
2
1
z
uz sin 2 ✓
z
s importante
destacar
que un quaternion de orientación sie
Aplicar una
rotación
norma
1.que un quaternion de orientación siempre debe
ante
destacar
• Dado un punto p
.
maginemos
que queremos rotar el punto p = (px , py , pz ) = px i+
s que queremos rotar el punto p = (px , py , pz ) = px i+py j +pz k.
nto
rotadomediante
se obtendrá
ladeoperación
de conjugació
do
se obtendrá
la operaciónmediante
de conjugación
p por
• Para rotarlo aplicaremos la operación de conjugación con un
quaternion
deqpq
rotación
q
1
p0 =
(75)
0
1
p realiza
= qpq
emostrar que la operación anterior realmente
una rotación
l eje u.
amos• aPodemos
demostrar
que
la
operación
anterior
realmente
realiza
u
componer rotaciones mediante premultiplicación
dedor •del
ejeq1,u.
Rotar
y después rotar q2, es equivalente a rotar q2q1
• Demostración:
p0 = (q2 q1 )p(q2 q1 )
1
= (q2 q1 )p(q1 1 q2 1 ) = q2 (q1 pq1 1 )q2 1
(79)
Es decir, primero se aplica la rotación q1 al punto p, y al resultado
obtenido se le aplica la rotación q2 .
Videojuegos II
© 2014-2015 Depto. Ciencia de la Computación e IA
B.3
Velocidad
angular
Integración
33
V2
=B [( Quaternions
xp
ypy yzp
+ (wp
z )wde
x + ypz
rotación
Integración
dexvelocidad
posición
zpy )x+
+(wpy xpz + zpx )y + (wpz + xpy ypx )z]+
Un quaternion de rotación de un ángulo ✓ alrededor de un eje u = (ux , uy , uz )
+[(xpx + ypy + zpz )x + (wpx + ypz zpy )w+
se define en forma polar como:
Matriz
dey rotación
(wp
xpz + zpx )z asociada
+ (wpz + xpy ypx )y]i+
1
j+uz k) zp )z+
+[(xpx + ypy + zpz )yq+= (wp
+ yyp
e 2 ✓(uxx i+u
(72)
z
y
• De los
coeficientes
del
quaternion
podemos
obtener
una
matriz
de
+(wp
xp
+
zp
)w
(wp
+
xp
yp
)x]j+
z
z
y
x
Esto esy equivalente
a:x
rotación
3x3
+[(xp
(wpx + ypz zpy )y+
x + ypy + zpz )z
1
1
• A veces
esy útilxp
disponer
de
esta
matriz
para
aplicar
+(wp
+
zp
)x
+
(wp
+
xp
yp
)w]z
=rotaciones
(73)
z q = cos
x ✓ + (ux i z+ uy j +y uz k)sin
x ✓
2
2
2
2 2
2
p
+
w
p
z
p
y
p
+
2xyp
2wzp
+
2xzp
+
2wyp
)i+
x
x
x
x
y
y
z
z
•=La (x
rotación
se
almacena
como
quaternion,
y
se
aplica
como
matriz
Es decir, los coeficientes de
este quaternion
serán: 2
2
2
2
+(2xypx + 2wzpx + y2 py 3 z 2py + w py3 x py + 2yzpz 2wxpz )j+
1
2
2
2
w
cos
✓ z 2 pz
+(2zxpx 2wypx + 2zypy + 2wxpy2 +
y
p
x
p
+
w
pz )z
z
z
1
6 x 7 6 ux sin ✓ 7
2 7
7=6
(77)
q=6
(74)
1
4 y 5 4 uy sin ✓ 5
2
Podemos observar que la operación
anterior
1
z
uz sin 2 ✓ puede ser expresada en forma
de matriz de transformación:
⇥
Es importante destacar que un quaternion de orientación siempre debe
tener norma 1.
2
Imaginemos
2
2 que queremos
2
2 rotar el punto p = (px , py , pz ) = px i+py j +pz k.
w rotado
+ x se yobtendrá
z mediante
2xy la operación
2wz
2xz + 2wy
El punto
de conjugación
de p por
2
2
2
2
2xy + 2wz
w
x +y
z
2yz 2wx
=4
q:
2zx
2wy
2zy + 2wx
p0 = qpq
1
w2
x2
y2 + z2
(75)
3
5
(78)
De esta
forma
podemos
matriz
de rotación
3 rotación
⇥ 3 a partir de
Vamos
a demostrar
que laobtener
operaciónuna
anterior
realmente
realiza una
✓ alrededor
del
un quaternion,
teniendo
en cuenta
losdecoeficientes
de la ecuación Integración
75.
Videojuegos
II eje u. © 2014-2015
Depto. Ciencia
la Computación e IA
34
V2
Integración de velocidad y posición
Posición de un punto del objeto
• La posición del objeto corresponde a su centro de masas
• El resto de puntos dependerán de
• Orientación del objeto θ
• Posición global del centro de masas (p0)
• Posición local del punto respecto al centro de masas (plocal)
• Podemos obtener la posición global de cualquier punto con
pglobal = ⇥plocal + p0
(21)
θ
La matriz de rotación ⇥ puede ser obtenida a partir de los coeficientes
plocal
del quaternion de rotación, tal como se detalla en el anexo B.1.
p0
• Donde Θ es una matriz de rotación 3x3
3.3 Velocidad angular
Correspondiente
θ como un vector que puede ser descompuesto
La velocidad
angular ! seadefine
en un eje de rotación u y una tasa de giro r alrededor de dicho eje:
Videojuegos II
! = ru
© 2014-2015 Depto. Ciencia de la Computación e IA
Integración
(22)
35
quaterniondederotación,
rotación,tal
talcomo
como se
se detalla
detalla en
deldel
quaternion
en elel anexo
anexoB.1.
B.1.
Integración de
y posición
del
develocidad
rotación,
tal como se detalla en el anexo B.1.
V2 quaternion
Velocidadangular
angular
3.33.3 Velocidad
3.3
Velocidad
angular
Velocidad
angular
La velocidad angular ! se define como un vector que puede ser descompuesto
La velocidad angular ! se define como un vector que puede ser descompuesto
en
un eje deangular
rotación! useydefine
una tasa
de giro
r alrededor
de dicho
eje:
La
velocidad
como
un
vector
que
puede
ser
en un• eje
de rotación
u y una en
tasa
de de
giro
r alrededor
de dichodescompuesto
eje:
Puede
descomponerse
tasa
giro
r y eje u (unitario)
en un eje
de
rotación
u
y
una
tasa
de
giro
r
alrededor
de
dicho
eje:
• No es un quaternion de rotación
! = ru
(22)
! = ru
(22)
Una propiedad de la velocidad!angular
= ru es que es aditiva. Si tenemos un
(22)
Una propiedad
velocidad
angular
es que esuna
aditiva.
tenemos
cuerpo
girando a de
!t , lapodemos
añadir
directamente
nueva Si
velocidad
!nun
Unagirando
propiedad
de
lalos
velocidad
angular
es que esuna
aditiva.
Sivelocidad
tenemos !un
cuerpo
a
!
,
podemos
añadir
directamente
nueva
t
n
simplemente
sumando
vectores:
• Es aditiva
cuerpo girando
a !t , podemos
añadir directamente una nueva velocidad !n
simplemente
sumando
los vectores:
simplemente sumando los vectores:
!t+1 = !t + !
(23)
!t+1 = !
+!
(23)
Al igual que ocurrı́a con la posición
y tvelocidad
lineal, la velocidad angular
• Integración de la orientación
!t+1 = !t + !
(23)
modificará
la ocurrı́a
orientación
cuerpo. Esta
modificación
dada por:
Al igual que
condel
la posición
y velocidad
lineal,vendrá
la velocidad
angular
• Actualizamos
el con
quaternion
de orientación
q alineal,
partir de
la
velocidadangular
Al
igual
que
ocurrı́a
la
posición
y
velocidad
la
velocidad
modificará
la
orientación
del
cuerpo.
Esta
modificación
vendrá
dada
por:
t modificación vendrá dada por:
angular
0
modificará
la orientación del cuerpo.
Esta
q =q+
!q
(24)
2t
0
0
q
= q + del
!qcuerpo en el instante actual, y (24)
Siendo q el quaternion de orientación
q
t
0
2 !q
q
=
q
+
(24)
tras la actualización. La velocidad angular
!
también
puede
ser
representada
2 cuerpo en el instante actual, y q 0
Siendo q el quaternion de orientación del
como
quaternion,
considerando
que no tiene
parte escalar.
0
Siendo
q
el
quaternion
de
orientación
del
cuerpo
en
el
instante
actual,
y
q
tras laLa
actualización.
La
velocidad
angular
!
también
puede
ser
representada
Videojuegos
II
©
2014-2015
Depto.
Ciencia
de
la
Computación
e
IA
Integración
36
demostración
de
la
ecuación
anterior
se
muestra
en
el
anexo
B.3.
tras la actualización. La velocidad angular ! también puede ser representada
V2
Integración de velocidad y posición
Aceleración angular
angular
Aceleración
Aceleración angular
casode
delalaorientación
orientación también
también tenemos una aceleración
caso
aceleración angular
angular
• Alactualización
igual
que
en
el
caso
lineal,
también
tenemos
una
aceleración
caso
la
de
la
velocidad
angular
se
aso la actualización de la velocidad
se realiza
realiza de
de la
la sigu
sig
angular ⍺
a:
• Integración de la velocidad angular
0
0
!
! = ! + ↵t
l igual
igual que
que en
en elel caso
caso de
de la
la velocidad
velocidad lineal,
lineal, podemos
podemos aplicar
aplicar un
u
ciaalal• aire
aire también
también
para
la rotación
rotación
(angular
cia
la
(angular
damping):
Podemos
definirpara
una resistencia
al aire
angulardamping):
da (angular drag)
0
0
!
!
t
t
= !(d
!(daa))
=
+ ↵t
+
↵t
11
11
Videojuegos II
© 2014-2015 Depto. Ciencia de la Computación e IA
Integración
37
V2
Integración de velocidad y posición
Torque
• Equivalente a la fuerza en el caso angular
• Par de fuerzas
• Dos fuerzas cuya componente lineal se anula
Torque
orque ⌧ es a la aceleración angular lo que la fuerza es a la acelerac
al. En
caso, en angular
lugar de
en no
cuenta
únicamente
• Laeste
aceleración
quetener
produce
depende
sólo de la la masa
eto, deberemos
en cuenta su
masa, sinotener
de la distribución
de momento
la misma de inercia I, en el que
tenemos
laconoce
masa,como
sino momento
cómo está
• Se
derepartida
inercia I a lo largo del cuerpo, lo c
uirá en cómo
lasmás
fuerzas
a del
la rotación.
• Cuando
alejadaafectarán
esté la masa
centro, más fuerza hará falta
para rotar
⌧ = I↵
(
Por ejemplo, si tenemos un objeto con forma de bastón, habrá que ha
nos fuerza para que gire alrededor de su eje principal que alrededor
eje. Por lo tanto, el momento de inercia no tendrá siempre el mi
Videojuegos II
© 2014-2015 Depto. Ciencia de la Computación e IA
Integración
38
El
torque ⌧deesvelocidad
a la aceleración
angular lo que la fuerza es a la aceleración
Integración
y
posición
V2
lineal. En este caso, en lugar de tener en cuenta únicamente la masa del
objeto, deberemos tener en cuenta su momento de inercia I, en el que no
sólo tenemos la de
masa,inercia
sino cómo está repartida a lo largo del cuerpo, lo cual
Momento
influirá en cómo las fuerzas afectarán a la rotación.
• El momento de inercia dependerá del eje de giro
= I↵
• ¿Alrededor de qué eje costará⌧ más
rotar el siguiente bastón?
(27)
Por ejemplo, si tenemos un objeto con forma de bastón, habrá que hacer
menos fuerza para que gire alrededor yde su eje principal que alrededor de
otro eje. Por lo tanto, el momento de inercia no tendrá siempre el mismo
x
valor para un determinado
objeto, sino que dependerá del eje de rotación.
El momento de inercia se representará mediante un tensor, conocido como
tensor de inercia. Este tensor de inercia es una matriz 3⇥3 que codifica cómo
•está
El momento
inercia
representa
el tensor
de tendrá
repartida lademasa
del se
objeto
alrededormediante
de cada eje.
Este tensor
lainercia
siguiente forma:
2
3
Ix
Ixy
Ixz
Iyz 5
I = 4 Iyx Iy
(28)
Izx
Izy
Iz
Para simplificar, supongamos que nuestro cuerpo rı́gido está compuesto
de n partı́culas cada una de ellas con una determinada masa mi , y situada
en una posición
(xi , yi , z©i )2014-2015
respecto
al centro de masas del cuerpo. Integración 39
Videojuegos II
Depto. Ciencia de la Computación e IA
Los coeficientes más importantes del tensor de inercia son los de la di-
C
Tensore
az (85)
Cax Tensores
a = 4 ay 5
4 ay 5
=
(85)vectorial.
de velocidad
y aposición
acoeficientes
V2 Integración Estos
z
se aplican
a
los
vectores
de
la
base
del
espacio
Podemos
ver
los tensores como una generalización de los vectores. U
a
3
z
base
canónica
deestructura
R es:
cientes se aplican Por
a losejemplo,
vectoreslade
la base
deluna
espacio
vectorial.
es
que representa una dirección. Por ejemplo, en e
2R3 un
3 vector
3 formado
3 tres
coeficientes
de2laestá
base
del 2espacio
vectorial.
por
coeficientes a = (ax , ay , az ), qu
a base Estos
canónica
de R3 es:se aplican a los vectores
1
0
0
3
Por ejemplo,
la
base
canónica
de
R
es:
ser representados en forma de tupla:
2
3
2
3
2
3
i = 4 0 5,j = 4 1 5,k = 4 0 5
(86)
s
1
0 2 3 0 2 3
2
3
20 3
0
1
ax
3
1= 4 0 5 0
0 (86)
4
5
4
5
0
1
i
=
,
j
=
,
k
• Generalización
de
los
vectores.
Por
ejemplo,
en
tenemos
nsores como
una generalización
de
los
vectores.
Un
vector
4
5
a
a
=
4
5
4
5
4
5
y z ), se conPor
lo
tanto,
un
vector
cuyos
coeficientes
son
a
=
(a
,
a
,
a
0
1
0
i
=
,
j
=
,
k
=
(86)
x
y
0una dirección.
0
1
ue representa
Por
ejemplo,
struirı́a
la siguiente
forma:
• Tensor
dedeorden
representa
ninguna
dirección):azEscalar
0 0 (no
0 en el espacio
1
ormado
por tres
coeficientes
a = son
(ax ,aay=
, az(a
),Estos
nto,
un vector
cuyos
coeficientes
ay ,coeficientes
apueden
x ,que
z ), se conse aplican a los vectores de la base del espacio
•
Tensor
de
orden
1
(representa
una
única
dirección):
Vector
lo tanto, un vector cuyos coeficientes
son
a
=
(a
,
a
,
a
),
3se conx
y
z
forma:
nsiguiente
formaPor
de
tupla:
a
=
a
i
+
a
j
+
a
k
(87)
x
y
z
Por ejemplo, la base canónica de R es:
struirı́a de la siguiente
2 De 3estaforma:
3 un tensor
2 3 de orden
2 3
forma, podemos considerar el vector 2como
1
0
0
x+ ay j + az k
a =1,axa
i
(87)
ya que representa una única dirección. De la4misma
forma,
un escalar
5
4
5
0
1
i
=
,
j
=
,k = 4 0 5
a = 4 ay 5
(85)
a
=
a
(87)
x i + ay j + az k
podrı́a serelconsiderado
un tensor
de orden
0, ya que0 no representa
ninguna
rma, podemos considerar
vector
como
un
tensor
de
orden
0
2
3 13
a
z
dirección.
Un De
tensor
de ordenel
2vector
será un
una
matriz,
ena1caso
estar en R
forma,
podemos
considerar
como
un que
tensor
bde
ade
resentaDe
unaesta
única
dirección.
la misma
forma,
escalar
1 orden
1 b 2 a1 b 3
Por
lo
tanto,
un
vector
cuyos
coeficientes
son
a = (ax , ay ,(90)
az )
T
será
de
dimensión
3
⇥
3,
con
la
siguiente
forma:
4
5
es
se
aplican
a
los
vectores
de
la
base
del
espacio
vectorial.
a
b
a
b
a
b
ab
=
a
⌦
b
=
ab
=
1,
ya
que
representa
una
única
dirección.
De
la
misma
forma,
un
escalar
2 1
2 2
2 3
nsiderado un tensor de orden 0, ya que no representa ninguna
struirı́a
de
la
siguiente
forma:
3
33
a3 b1ninguna
a3 b 2 a3 b 3
etensor
canónica
de R
podrı́a
ser
considerado
tensorque
deen
orden
que
no
representa
de orden
2es:
será una un
matriz,
caso20,
deaya
estar
en
R
a
a
11dos
12direcciones):
13
•
3
Tensor
de
orden
2
(representa
Matriz
tensor
orden
será
matriz,
que
en
caso
de
estar
en
R
3 de forma:
2 23
sióndirección.
32⇥ 3,3conUn
la 2
siguiente
De
estauna
forma
tenemos:
4
5
a = ax i + ay j + az k (88)
a = a21 a22 a23
1
0
0
será de dimensión
3 ⇥ 3, con la3 siguiente 2forma:
3
2
3
2
a31 forma,
a3
32 a33 2
4
5
4
5
4
5
De
esta
podemos
considerar
el
vector
como
un tensor
i = 0 , j = a111 ,ak12= a130 2
1 0 30(86)
0 1 0
0 0 0
1,a ya
u
este caso estos
aplican
a=una
combinaciones
4 queserepresenta
5 , ij(88)
4 0 única
5 , jide= vectores
4 1De 0la de
5 , ... forma,
5 acoeficientes
0 0 dirección.
0misma
(91)
0
a = 4 a0En
11ii =
12 0a130 0
21 a22 a231
podrı́a
ser
considerado
un0 tensor
de orden
0,0 ya0 que
no representa
la base canónica,
de
laa siguiente
forma:
4
5
0
0
0
0
0
0
a
a
a
=
(88)
a
a
a
21
31
32 son
33 a = (a
n vector cuyos coeficientes
, ay22, az ),23 se
Un contensor de orden 2 será una matriz, que en caso de es
xdirección.
a
a
a
32
33
Este31tipo
dedetensores
de orden
representan
unaforma:
relación lineal entre dos
so estos
coeficientes se aplican a combinaciones
de
vectores
de3,2con
será
dimensión
3⇥
la siguiente
nte
forma:
= a11 iicoeficientes
+ a12cantidades
ij + a13se
ik aplican
+vectoriales.
a21 ji +aacombinaciones
ki +
a33 kk 3(89)
22 jj + a23 jk + a31de
este casoaforma:
estos
vectores
ica, de En
la siguiente
2 a32 kj + de
a11 3a212 a13
2 0 3 2
3
la base
canónica,
forma:
a=
ax i + ayde
j +laazsiguiente
k
(87)
v1
a11 a12 4 a13
v1
5
Tensores
Podemos ver los te
es una estructura
R un vector está
ser representados
Estos coeficient
Por ejemplo, la ba
a22 a23
a =a y ab21como:
Definimos el producto tensor entre dos vectores
0
4 v2 5 = 4 a21 a22 aa23 5a4 v2a 5
Videojuegos
II
©
2014-2015
Depto.
Ciencia
de la Computación e IA
31
32
33
podemos considerar el vector como un tensor de orden
0kk (89)
12 ij + a13 ik + a21 ji + a22 jj + a23 jk + a31 ki + a32 kj + a33
v3
a31 a32 a33
v3
Integración
40
(92)
V2
Integración de velocidad y posición
Tensor de segundo orden
2
3
a1 b1 ase
a1 b3 como
• El producto tensor entre dos vectores
1 b2 define
•
ab = a ⌦ b = abT = 42 a2 b1 a2 b2 a2 b3 53
(90)
aa31bb11 aa31bb22 aa31bb33
T
4 a2 b 1 a2 b 2 a2 b 3 5
ab
=
a
⌦
b
=
ab
=
(90)
De esta forma tenemos:
a3 b 1 a3 b 2 a3 b 3
2
3
2
3
2
3
1 tenemos:
0 0
0 1 0
0 0 0
De esta forma
4 0 0 de
5un
4 0 de
5 , ji =
4
5 , ... de orden
• El producto
0
0
0
1
0
0
ii = tensor
,
ij
=
(91) m
tensor
orden
n
por
un
tensor
2
3
2
3
2
3
00 01 de
00 orden n+m
00 00 00
1 00 00
produce como0resultado
un tensor
5 , ij = 4 0 0 0 5 , ji = 4 1 0 0 5 , ...
0 0 0 de
ii =de4tensores
(91)
Este
tipo
orden
2
representan
una
relación
lineal
entre
dos
Un tensor de orden
2 0representa
una
relación0 lineal
entre dos
0
0
0
0
0
0
0
cantidades vectoriales.
vectores
Este tipo de tensores de orden 2 representan una relación lineal entre dos
2 0 3 2
a11 a12
cantidades vectoriales.v10
4 v2 5 = 4 a21 a22
2 00 3 2
vv31
aa3111 aa3212
4 v20 5 = 4 a21 a22
Podemos encontrar también
tensores
0
v3 un array
a31 dea323
un tensor de orden 3 será
32
3
a13
v1
a23 5342 v2 53
(92)
aa3313
vv31
5 4 v2 5
a
(92)
23
de orden superior. Por ejemplo,
a33
v3 El producto tensor
dimensiones.
• En el caso del tensor de inercia, establece la relación entre el torque y
puede
ser generalizado
cualquiertensores
número de
de orden
dimensiones.
de
Podemos
encontrara también
superior.El producto
Por ejemplo,
laun
aceleración
angular
tensor
m3 por
tensordede3 orden
n, dará como
resultado
un
un
tensorde
deorden
orden
seráotro
un array
dimensiones.
El producto
tensor
tensor
m + n. a cualquier número de dimensiones. El producto de
puede de
serorden
generalizado
Videojuegos
Depto.
Ciencia de
de la orden
Computación
IA
Integración
un tensor
de IIorden m© 2014-2015
por otro
tensor
n, edará
como resultado un
41
la siguiente
forma:
l. En este
caso,
en
lugar
de
tener
en
cuenta
únicamente
la
masa
del
Integración de velocidad y posición
to, deberemos tener en cuenta su momento de inercia I, en el que no
tenemos la masa, sino cómo está repartida a lo largo del cuerpo, lo cual
irá en cómo las fuerzas afectarán a la rotación.
V2
Tensor de ⌧inercia
= I↵
2
Ix
I = 4 Iyx
Izx
Ixy
Iy
Izy
3
Ixz
Iyz 5
Iz
Para simplificar, supongamos que nuestro cuerpo rı́gido está comp
(27)cada una de ellas con una determinada masa m , y sit
de n partı́culas
i
en unaque
posición
Por ejemplo, si tenemos un objeto con forma de bastón, habrá
hacer(xi , yi , zi ) respecto al centro de masas del cuerpo.
Los coeficientes
os fuerza para que gire alrededor de su eje principal que alrededor
de más importantes del tensor de inercia son los de
agonal,elque
indican el momento de inercia de cada eje. De hecho, m
eje. Por lo •tanto,
el
momento
de
inercia
no
tendrá
siempre
mismo
Corresponden al momento de
inercia
de cada
motores
simplemente
tienen eneje
cuenta estos coeficientes, y el tensor d
r para un determinado objeto, sino que dependerá del eje de rotación.
ercia se trata como un vector de 3 componentes. Estos componentes
El momento de
se
representará
mediante
un
tensor,
conocido
como
• inercia
Consideremos que el cuerpo diagonal
está
formado
n partículas
cada
se calcular depor
la siguiente
forma:
or de inercia. Este tensor de inercia es una matriz 3⇥3 que codifica cómo
una con masa mi y con posición (xi, yi, zi)
repartida la masa del objeto alrededor de cada eje. Este tensor tendrá
n
q
X
guiente forma:
Ix =
mi yi2 + zi2
• Habitualmente sólo se definen los elementos de su diagonal
2
Ix
I = 4 Iyx
Izx
Ixy
Iy
Izy
3
Ixz
Iyz 5
Iz
(28)
Iy =
i=1
n
X
i=1
n
X
q
mi x2i + zi2
q
mi x2i + yi2
Iz =
Para simplificar, supongamos que nuestro cuerpo rı́gido está compuesto
i=1
partı́culas cada una de ellas con una determinada masa mi , y situada
na posición (xi , yi , zi ) respecto al centro de masas del cuerpo.
12
• Esto
es suficiente
si elde cuerpo
regular (simétrico)
Los coeficientes
más importantes
del tensor
inercia sontiene
los deforma
la dial, que indican el momento de inercia de cada eje. De hecho, muchos
ycuenta estos coeficientes, y el tensor de inores simplemente tienen
en
p
p
p
2kg
(0,1)
p
p
p
= 2 componentes
12 + 202 + 1de la( 1)2 2 + 022 + 1 ( 1)22 + 022 = 4
se trata como un vector de 3 componentes.IxEstos
2
Ix = 2 2 p+ 0 + 1 (p1) + 0 + 1 (p 1) + 0 = 6
x
onal se calcular de la siguiente forma:
p
p 2
p 2
2
2
2
2
Iy = 2 20 + 20 + 1 ( 1)2 + 02 + 1 (1)2 + 02 = 2
I
y = 2 0 + 0 + 1 ( 1) + 0 + 1 (1) + 0 = 2
(-1,-1)
(1,-1)
1kg X
1kg p
n
Es decir, cada coeficiente no tiene en cuenta sólo la masa, sino tambié
2 + z2
Ix =
mi yEs
(29)tiene en cuenta sólo la masa, sino tambié
decir, cada coeficiente no
alejada que está la masa respecto al centro del eje correspondiente. De
i=1
Videojuegos
II
© 2014-2015
Depto.
Ciencia respecto
de la Computación
ecentro
IA
Integración 42 De
alejada
que
está
la
masa
al
del
eje
correspondiente.
n
forma, hará falta hacer más fuerza para girar alrededor de un eje del qu
X p
V2
distribución de masa del cuerpo esté alejada.
Atendiendo
a alalaecuación
??,
podemos ver
verque
queenencaso
casodedetener
tener
como
Integración
de velocidad
yecuación
posición
Atendiendo
??, podemos
como
tensor
la fuerza
fuerzaque
queseseejerza
ejerzaenen
cada
tensordedeinercia
inerciauna
unamatriz
matriz diagonal,
diagonal, la
cada
ejeeje
se se
transformará
aceleraciónpara
paraese
esemismo
mismoeje,
eje,
aplicando
transformarádirectamente
directamente en
en una
una aceleración
aplicando
el el
momento
dichoeje.
eje.
momentodedeinercia
inerciacorrespondiente
correspondiente aa dicho
Esto
un cuerpo
cuerpotenga
tengaforma
formaregular,
regular,
como
Estoserá
serásuficiente
suficiente siempre
siempre que un
como
cubos,
esferas,o oen
engeneral
general cuerpos
cuerpos simétricos.
existen
cubos,
esferas,
simétricos. Sin
Sinembargo,
embargo,cuando
cuando
existen
• El cuerpos
irregularidades
un cuerpo,
cuerpo,
como ejercida
por
elelcaso
dedeque
de de
las las
irregulares
la fuerza
sobre
un
eje
puede
irregularidades
enenun
como
por ejemplo
ejemplo
caso
queuna
una
esquinas
cubotenga
tengauna
una masa
masa superior
será
esquinas
dedeun
superioralalresto
restoelelcomportamiento
comportamiento
será
trasladarse
auncubo
otros
distinto.Por
Porejemplo,
ejemplo,sisi aplicamos
aplicamos una
ejeeje
concreto
distinto.
una fuerza
fuerzapara
paragirar
girarenenunun
concreto
y
cubocon
conuna
unaesquina
esquina cargada,
cargada, la
la aceleración
no
seseproducirá
únicamente
el el
cubo
aceleración
no
producirá
únicamente
2kg
(0.2,
1.8)
dichoeje,
eje,sino
sinoque
quese
se trasladará
trasladará aa otros
ejes.
Esto
esesası́ası́porque
el el
lado
enen
dicho
otros
ejes.
Esto
porque
lado
Cuando
ejerzamos
fuerza
esquina cargada necesita más fuerza para producir aceleración que el
concon
la laesquina
cargada
necesita más alrededor
fuerza para de
producir
aceleración
que
el
x
x
también
girará
y
otro lado.
otro lado.
(-0.8, -1.2)
Para definir (1.2,
esta-1.2)
forma de trasladar la rotación de un eje a otro debido a
Para2kgdefinir
1kgesta forma de trasladar la rotación de un eje a otro debido a
irregularidades
del objeto deberemos definir los elementos fuera de la diagonal
irregularidades
del elementos
objeto deberemos
definir
los
elementos
fuera de la diagonal
del
tensor.
Estos
se
calculan
de
la
siguiente
forma:
• Necesitamos los elementos de fuera de la diagonal
Cuerpos irregulares
del tensor. Estos elementos se calculan de la siguiente forma:
n
X
n mab
Iab = X
i i i
Iab =
i=1
i=1
• En el ejemplo anterior tendríamos
m i ai b i
(32) el eje a
Traslada fuerza sobre
(32)
en aceleración sobre el eje b
Ixy = 2·( 0.8)·( 1.2)+2·(0.2)·(1.8)+1·(1.2)·( 1.2) = 1.92+0.72 1.44 = 1.2
Ixy = 2·( 0.8)·( 1.2)+2·(0.2)·(1.8)+1·(1.2)·( 1.2) = 1.92+0.72 1.44(33)
= 1.2
p que destacarpque
p en el sumario anterior
p
Hay
las 2coordenadas
ai y bi pueden
(33)
p
p
2
2
2
2
2
I
=
2
(1.8)
+
0
+
2
(
1.2)
+
0
+
1
(
1.2)
+
0
=
3.6
+
2.4
+
1.2
=
7.2
2 +o
2negativas.
2 lo
2 + 1 si existe
2 + 02 =en
x ser
positivas
Por
tanto,
simetrı́a
cualquiera
de
las
Ix =
2Hay
(1.8)
0
+
2
(
1.2)
+
0
(
1.2)
3.6
+
2.4
+
1.2
=
7.2
que destacar que
en el sumario anterior
p
p
p las coordenadas ai y bi pueden
p
p
p
2 +consideradas
2 + 2 ( 0.8)
2 + 02 + 1será(1.2)
2 + 02 = 0.4 + 1.6 + 1.2 = 3.2
I
=
2
(0.2)
0
dos
direcciones
el
resultado
0.
2
2
2
2
2
y
ser
positivas
o
negativas.
Por
lo
tanto,
si
existe
simetrı́a
en +
cualquiera
las
Iy = 2 (0.2) + 0 + 2 ( 0.8) + 0 + 1 (1.2) + 02 = 0.4
1.6 + 1.2 de
= 3.2
Por ejemplo,
si Ixy tiene valor,
cuando apliquemos
fuerza en el eje x parte
dos direcciones
consideradas
el resultado
será 0.
Es
cada
coeficiente
tiene
en
cuenta
sólolalamasa,
sinotambién
también en
lo Integración
de
ladecir,
rotación
sesi
trasladará
atiene
y.
Escuando
decir,
existencia
de irregularidades
Videojuegos
II coeficiente
2014-2015
Depto.
Ciencia
dela
la Computación
emasa,
IA
Es
decir,
cada
nono
en
cuenta
sólo
sino
Por
ejemplo,
Ixy ©tiene
valor,
apliquemos
fuerza
en el eje xloparte
alejada
quexy
está
la masa
respecto
eje no
correspondiente.
De esta
el plano
afectará
a los
giros enalxcentro
y en y,del
pero
en z.
43
V2
Integración de velocidad y posición
Tensor de inercia inverso
• Al igual que en el caso de la fuerza lineal, lo que nos interesa es
conocer
la aceleración
que se produce
un la
torque
Una vez
tenemos
el tensorangular
de inercia,
podemosal aplicar
calcular
acelerac
• Necesitamos
la inversa
deltorque
tensorutilizando
de inerciala inversa:
ultante
de la aplicación
de un
↵=I
1
⌧
(
Dado que este es el uso que se le dará al tensor habitualmente, lo norm
• Además,
objeto puede
estar rotado,
por lo
también
será
á almacenar
la elinversa
del tensor
de inercia,
alque
igual
que se
almacena
ersa denecesario
la masa.rotar el tensor de inercia
• Se
almacenará
el tensor
de inercia
inverso
Además,
hay
que tener
en cuenta
que
este tensor corresponde al obj
• A dichooriginal.
tensor se le
de rotación
correspondiente
la
su orientación
Alaplica
rotarla matriz
el objeto
será necesario
rotaratambién
orientación del objeto
sor. Podremos aplicar sobre el tensor la misma matriz de rotación que
aplique al objeto.
Normalmente en un motor de fı́sicas utilizaremos formas geométri
icas cuyos tensores
son
por 44lo q
Videojuegos II de inercia
© 2014-2015 Depto.
Ciencia conocidos
de la Computación e IA de antemano,
Integración
básicas cuyos tensores de inercia son conocidos de antemano, por lo que
será
necesario
especificarlo
manualmente.
Integración
de velocidad
y posición
V2
no no
será
necesario
especificarlo
manualmente.
3.6
Acumulación
torques
Acumulación
dede
torques
3.6
Acumulación de torques
El principio de D’Alembert también se aplica a torques, de la misma forma
El principio
D’Alembert
aplica
a torques,
de la misma forma
• Ela principio
delineal.
D’Alembert
se aplica
a torques
que
una de
fuerza
En también
estetambién
caso se
tenemos:
que a una fuerza lineal. En este caso X
tenemos:
⌧ = X ⌧i
(35)
⌧=
i
⌧i
(35)
Por lo tanto, los objetos deberán tener
tanto un acumulador de fuerza
i
lineal
como
un acumulador
torque. tener
Cada
objeto
unde
acumulador
de torques
Por• lo
tanto,
lostendrá
objetos
deberán
tanto un acumulador de fuerza
Al aplicar
una fuerza f de
sobre
un punto pf de un objeto (en coordenadas
lineal como
un acumulador
torque.
locales) se podrá producir tanto un torque como fuerza lı́neal. El torque
Al
aplicar
una
fuerza
ff sobre
un
punto
pf objeto
de un objeto (en coordenadas
•
Al
aplicar
una
fuerza
en
un
punto
p
f del
producido se calculará como:
locales)• Añadiremos
se podrá producir
un torquede como
la fuerza tanto
f al acumulador
fuerza fuerza
lineal lı́neal. El torque
producido
se calculará
como:
⌧ = pfpor
⇥ fla fuerza
(36)
• Obtenemos
el torque producido
Es decir, el torque será mayor cuanto más alejado esté del centro del objeto
⌧
=
p
⇥
f
(36)
f
el punto donde ejercemos la fuerza, y cuando la fuerza sea perpendicular a
Esradial.
decir,
el
torque
será
mayor
cuanto
más
alejado
esté
del
centro
del
objeto
la
• Añadimos el torque al acumulador de torque
el punto donde ejercemos la fuerza, y cuando la fuerza sea perpendicular a
la radial.
4
Resolución de restricciones
Videojuegos II
© 2014-2015 Depto. Ciencia de la Computación e IA
Integración
45
V2
Integración de velocidad y posición
Integrador RK4
• Hemos visto un integrador sencillo
• Presenta problemas cuando la aceleración varía en el tiempo
• A mayor delta time menos preciso será el resultado
• Existen integradores que proporcionan resultados más precisos
• Runge Kutta 4 (RK4)
• Considera hasta la cuarta derivada de la posición (la aceleración es
la segunda derivada)
• Evalua la derivada en diversos instantes intermedios del delta time
• Proporciona una alta precisión, sin llegar a ser totalmente exacto
Videojuegos II
© 2014-2015 Depto. Ciencia de la Computación e IA
Integración
46
V2
Integración de velocidad y posición
¿Preguntas...?
Videojuegos II
© 2014-2015 Depto. Ciencia de la Computación e IA
Integración
47
Documentos relacionados
Descargar