Al crear cosas como la física en los juegos, necesitas un integrador. He visto que la integración de Verlet menciona varios lugares como una gran alternativa a la integración de Euler. Por ejemplo en el famoso documento de Thomas Jakobsen . Sin embargo, en este artículo Glenn Fiedler escribe:
En lugar de presentarle la amplia gama de integradores diferentes que existen, voy a ir al grano e ir directamente a lo mejor. Este integrador se llama Runge Kutta Order 4 Integrator, también conocido como RK4.
Así que aparentemente no hay bala de plata. ¿Cuáles son los pros y los contras de los diferentes integradores? Con respecto a la simplicidad, velocidad, precisión, estabilidad, etc. ¿Qué integradores son los más adecuados para qué tipo de juegos? ¿Cuándo usarías Verlet, RK4 u otros? ¿Alguna vez deberías usar Euler?
Respuestas:
Pros y contras de ambos métodos:
RK4 Pros:
RK4 Contras:
Verlet Pros:
Verlet Contras:
Usar uno sobre el otro depende del escenario. Si la rigidez y las grandes fuerzas externas y las energías virtuales son un problema, considere otros métodos que tengan la palabra "implícita" en su descripción / título.
Tenga en cuenta que algunos autores / libros usan el término Euler semi-implícito para un integrador de Euler explícito real llamado método de Euler simpléctico (o Euler Cromer) del cual Verlet se deriva realmente. Verlet también es llamado por algunas personas como el "método leapfrog". Velocity Verlet y el método del punto medio son bastante similares ya que una estimación en un paso de tiempo de
t + 0.5*dt
se requiere para un paso tipo predictor-corrector. Los métodos IMEX (implícito-explícito) también se utilizan para nombrar dos enfoques similares pero no idénticos: separe los cálculos en partes rígidas y no rígidas y use diferentes integradores en ellos (el explícito para no rígido, implícito para rígido) O resuelva la velocidad con un paso de actualización implícito y actualizar la posición de manera explícita (este es un método híbrido semi-implícito que cae en la clase de métodos IMEX porque las partes rígidas afectan más al cálculo de la aceleración). Los métodos implícitos son más engorrosos y requieren resolver un sistema de ecuaciones no lineales simultáneas para toda la configuración. Los métodos implícitos se usan para cuerpos deformables y generalmente no se usan para cuerpos rígidos desacoplados.Como se indicó en uno de los comentarios, si puede, no use Euler. Utilice el método del punto medio, el Euler semi-implícito o, al mismo costo, la posición-Verlet. Todos ellos tienen una precisión ligeramente mayor y sensiblemente más estabilidad que el integrador explícito de Euler.
Lectura recomendada de mini comparación:
http://wiki.vdrift.net/Numerical_Integration
fuente
Las implementaciones de Euler tienden a ser muy rápidas, pero mucho menos estables que las alternativas. Runge Kutta es más lento que Euler, pero mucho más preciso y estable.
No estoy muy bien informado sobre la integración de Verlet, así que no tengo idea de cómo se compara con Euler y Runge Kutta.
Si necesita que sus simulaciones sean más exactas, o incluso una prueba numérica, Runge Kutta es la mejor de las dos.
Si necesita física rápida y de bajo costo para un juego simple, Euler es la mejor opción.
fuente
En primer lugar, creo que debería usar Euler hasta que experimente una necesidad directa de usar un esquema de integración más avanzado. Es rápido y fácil de implementar.
Si experimenta problemas de estabilidad, como sistemas de resortes que nunca se detienen o si su simulación requiere un alto nivel de precisión, comience a experimentar con los demás.
Uno que no he visto mencionado anteriormente es el método de punto medio, que es muy fácil de implementar y solo requiere un paso de integración adicional.
fuente