Pregunta

Necesito escribir un simulador de física 3D muy simple en Java, cubos y esferas que se topen entre sí, no mucho más. Nunca he hecho algo así, ¿por dónde debería empezar? ¿Alguna documentación sobre cómo se hace? ¿Algunas bibliotecas que podría reutilizar?

¿Fue útil?

Otros consejos

Suponiendo que desea comenzar a hacerlo, la mejor manera de comenzar es con un lápiz y un papel. Comience a definir los puntos focales de su aplicación (como la esfera de entidades, el cubo, etc., reglas como la gravedad, la colisión, etc., decida la jerarquía de los objetos, etc.)

Si sabe cómo hacerlo y desea una introducción al lado de la tecnología, Swing es una buena opción para crear interfaces de usuario en Java.

También eche un vistazo aquí: http://www.myphysicslab.com/

La lección 39 de NeHe es un buen punto de partida, está en C ++, pero la teoría es bastante fácil de entender.

Una buena biblioteca de física de java es jmephysics ( http: //www.jmonkeyengine .com / jmeforum / index.php? topic = 6459 ); es bastante fácil de usar y se encuentra encima de ODE ( http://www.ode.org/ ) y jmonkeyengine ( http://www.jmonkeyengine.com ) que le da un scenegraph ( http://en.wikipedia.org/wiki/Scene_graph ), nuevamente, algo que necesitarás para cualquier cosa más allá de una aplicación 3d muy simple.

No lo he usado durante algún tiempo y veo que no se han lanzado desde finales de 2007, así que no estoy seguro de cuán activa es la comunidad ahora.

¿Qué hay de definir primero una clase para un objeto físico? Tiene posición, velocidad, masa y quizás subclases con otras características como forma, elasticidad, etc.

Luego crea un universo (clase) donde colocar estos objetos físicos. Suena divertido :)

Si todo lo que necesitas para simular es esferas / círculos y cubos, entonces todo lo que necesitas es un poco de Matemática vectorial.

Por ejemplo, para simular un juego de billar simple, cada bola (esfera) tendrá una posición, una velocidad lineal 3d y un vector de aceleración lineal 3d. Su simulación involucraría muchos marcos pequeños que actualizan continuamente cada bola. Si dos o más bolas chocan, simplemente suma los vectores y calcula las nuevas velocidades para todas las bolas. Si una pelota golpea una pared, por ejemplo, todo lo que se requiere es voltear el signo de la pelota para que rebote ...

Si quieres hacer esto desde cero, lo que significa codificar tu propio motor de física, tendrás que conocer los entresijos de las matemáticas que se encuentran detrás para lograr esto. Si tiene un historial matemático bastante bueno, tendrá una ventaja inicial, de lo contrario habrá una curva de aprendizaje empinada.

Puedes comenzar en este foro de la comunidad para recopilar información sobre cómo se hacen las cosas: gamedev.net

Por supuesto, puede usar un motor de código abierto como Ogre si no desea codificar el suyo propio.

Echa un vistazo a la bulletphysics. bulletphysics.com es el foro o echa un vistazo al proyecto en Sourceforge .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top