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