Física 2D: almacenamiento de la posición anterior vs velocidad de almacenamiento


9

Vi una serie de tutoriales y libros de juegos 2D en los que la posición anterior de un objeto se almacenaba en estado en lugar del vector de velocidad. Luego se calcula la velocidad de cada cuadro como una diferencia entre las posiciones.

¿Cuáles son las ventajas de ese método?


2
¿Podría vincular a los tutoriales en cuestión, para el contexto?
Anko

Comparto la misma curiosidad de Anko
dnk drone.vs.drones

Este tutorial menciona que esto se llama integración Verlet. Encontré este artículo , en el que se explican las ventajas de Verlet. Básicamente, es más fácil manejar colisiones y restricciones complejas.
Terzalo

@Terzalo Vea la versión actualizada de mi respuesta para ver si ayuda a comprender la lógica general detrás del caso específico en cuestión
Y el

Respuestas:


1

Sin saber exactamente los tutoriales o libros que has leído, esto es lo que puedo contarte.

Para ser más precisos en términos de definición física: la dirección del vector se calcula como la diferencia entre la posición actual y la última posición. La velocidad del vector es igual a la dividida por el tiempo transcurrido al pasar de una posición a otra. Ver: http://www.physicsclassroom.com/class/1DKin/Lesson-1/Speed-and-Velocity

Sin embargo, cuando se considera que el tiempo transcurrido es el "cuadro 1" genérico, es decir, desde el último cuadro hasta la corriente, entonces la velocidad del vector y la dirección del vector se vuelven iguales. En pseudocódigo:

direction = current_position - past_position
elapsed_time = 1 frame
velocity = direction / elapsed_time

Entonces, en general, la razón principal para almacenar la posición en el último cuadro y obtener la posición en el cuadro actual es que puede ser la única forma o la forma más barata de conocer la dirección actualizada (y, por lo tanto, la velocidad actualizada), es decir, la dirección del movimiento en el cuadro actual.

Suponga que almacena la dirección (o incluso la velocidad) en un cuadro dado. En el siguiente cuadro, la única forma de saber si la dirección (o incluso la velocidad) ha cambiado es si la calcula de nuevo. La razón es que la dirección anterior o la velocidad anterior no le permiten conocer la dirección actual o la velocidad actual en caso de que el movimiento cambie de un cuadro a otro.

Ahora, teniendo en cuenta los tutoriales que ha mencionado en el comentario a su propia pregunta, se vuelve aún más claro. En uno de los tutoriales, los autores dicen que:

Ahora, enseñemos a nuestra partícula cómo moverse con la integración de Verlet. Esa es solo una manera elegante de decir que vamos a descubrir qué tan rápido se mueve nuestra partícula comparando su posición este cuadro con su posición el último cuadro. ¿Por qué? Debido a que eso nos da velocidad implícita: cualquier cambio en la posición actual de la partícula actualizará automáticamente su velocidad

Entonces, como puede ver, el último cuadro de posición de almacenamiento permite, como dije anteriormente, el cálculo actualizado de la velocidad en el cuadro actual cuando el objeto (en el tutorial es una partícula) cambia de posición. Si guardó solo la dirección o la velocidad en el último cuadro, no podría actualizarlo tan fácilmente en caso de que la posición cambiara del cuadro pasado al actual. Por lo tanto, como también se señaló en el otro tutorial al que se vinculó, guardar la posición anterior permite la actualización automática de la velocidad cuando cambian las posiciones.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.