Supongamos que tienes un objeto flotando libremente en el espacio. Tiene un vector al que desea que apunte este objeto, y un vector que representa la dirección en la que se encuentra actualmente. De estos dos, puede obtener la rotación (matriz, cuaternión, lo que sea) que representa el cambio de orientación para alinear los dos vectores.
Si solo tiene la capacidad de aplicar torque (derivada de la velocidad angular) a su objeto, ¿cuál es un buen algoritmo para aplicar torque a lo largo del tiempo que no sobrepasará / subestimará el destino?
(En este caso, es una nave espacial que quiere orientarse automáticamente en la dirección del viaje usando propulsores. El desplazamiento es irrelevante).
physics
orientation
Karantza
fuente
fuente
Respuestas:
Esto se puede manejar como el caso similar para la aceleración lineal.
Primer hecho a tener en cuenta: Debido a que la nave comienza con una velocidad angular de cero, y desea que termine con una velocidad angular de cero, esto significa que el cambio total en la velocidad debe ser igual a cero.
De esto podemos ver que la integral de la aceleración en el tiempo debe ser igual a cero: debe haber exactamente "tanta" aceleración positiva como la aceleración negativa.
Por lo tanto, su solución, sea cual sea, debe limitarse a esta propiedad: aceleración "total" igual hacia adelante y hacia atrás.
Esto es lo que debe seguir la forma de su gráfico de aceleración en el tiempo:
Mirando esto, ¡hay tantas formas y formas posibles en las que podría estar tu aceleración! Hagamos algunas suposiciones para la forma de aceleración que desee, para dar una respuesta fácil / concisa.
En aras de una respuesta simple, tendré la aceleración en uno de tres estados: adelante, atrás o cero. Hacia adelante y hacia atrás serán de igual magnitud, y los estados se pueden cambiar instantáneamente. (no hay aceleración gradual de la aceleración)
Puede encontrar el cambio en la distancia para una aceleración dada durante un período de tiempo dado con esta ecuación:
La solución más simple aquí sería acelerar hasta llegar al punto medio, luego desacelerar el resto del camino.
Tomaremos
P
como la distancia total que desea mover:Así que básicamente:
a
porsqrt(P/a)
unidades de tiempo (unidades basadas fuera de sus unidades para la aceleración)Esta no es la única solución. Te llevará allí en el menor tiempo posible (
2*sqrt(P/a)
). Pero, ¿y si quieres una versión más relajada?En este caso, puede acelerar 1/3 del camino, avanzar por el 1/3 y desacelerar el resto del tercero. O 1 / 4th, costa por 1/2, desacelerar 1 / 4th también.
O tal vez podría acelerar durante una cantidad fija de tiempo, y luego desacelerar durante una cantidad fija de tiempo, pero espere hasta llegar a la posición exacta antes de comenzar a desacelerar.
fuente