viernes, 6 de junio de 2014

Práctica 5: Sólido Rígido (Sesión 2)

ENUNCIADO:
Implementar el bucle de simulación y simular la dinámica del sólido rígido con esferas capaces de ser impulsadas (por teclado).
Acumularemos los torques derivados de los impulsos (fuerza, pos, t) y las fuerzas.
Usaremos quaterniones (vector de 4 elementos normalizado).
Integrar: velocidad, posición.
Actualizar la derivada del quaternion y la matriz de inercia (inversa).

Nos proporcionan la clase Quaternion, y tenemos que completar la clase Body y el Main.

- Main: creamos un nuevo Body, y recogemos los eventos del teclado en función de la dirección del impulso que queramos darle a la esfera (hacia delante, detrás, izquierda y derecha).

- SolidoAlumn: formada por las clases Impulse y Body.
En Impulse tenemos el constructor con tres parámetros: la posición del impulso, su fuerza y su duración.
Para completar los métodos de la clase Body nos ayudamos de los apuntes que nos proporcionan en la clase de teoría:

   · addImpulse (Impulse i): al pulsar una tecla de dirección, en el main se crea un impulso que se pasa como parámetro a la clase Body. Este método añade dicho impulso al array de impulsos.
 
   · computeFTau: con este método hacemos el cómputo de fuerzas y torques. Si la duración del impulso es menor o igual a cero, eliminamos dicho impulso. Si no, realizamos los siguientes cálculos:
   Calculamos el vector torque, de manera que ' Torque = Sumatorio(centro de masa - posición impulso) x Fuerza del impulso '.
   Calculamos la rotación y la guardamos en 'totalAngImpulse'
   Hallamos la fuerza del impulso.
   Trasladamos el centro de masas ('totalLinearImpulse').
   Disminuimos la duración del impulso.

   · update: hay que calcular el rozamiento antes de la llamada a computar las fuerzas, por lo que:
   Calculamos la velocidad de la partícula situada en la base de la esfera: v_ground = v(t0) + w × r
   Multiplicamos dicho vector por la constante de rozamiento.
   En el método 'ComputeFTau' se sumará este rozamiento a la fuerza [ f.add(rozamiento) ]

   Ahora ya llamamos a la función que computa los torques y fuerzas, y después seguimos estas fórmulas:
- Simulación del sólido

- Rotación con quaterniones


Tras ello, actualizamos la posición del impulso y ya pasamos a dibujar la esfera, trasladando con las posiciones que cogemos de Body y rotando con el ángulo y el eje de giro de la clase Quaternion.







   

No hay comentarios:

Publicar un comentario