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