Java 我从哪里开始编写/使用3D物理模拟引擎?

Java 我从哪里开始编写/使用3D物理模拟引擎?,java,simulation,physics-engine,Java,Simulation,Physics Engine,我需要用Java编写一个非常简单的3D物理模拟器,立方体和球体相互碰撞,仅此而已。我从来没有做过那样的事,我该从哪里开始呢?有关于如何完成的文档吗?有我可以重复使用的库吗?假设你想开始学习如何使用,最好的开始方法是用笔和纸。开始定义应用程序的焦点(如实体球体、立方体等,重力、碰撞等规则,确定对象的层次结构等) 如果您知道如何做到这一点,并且希望获得技术方面的入门知识,那么Swing是在Java中创建UI的一个不错的选择 请看这里:(不是Java) (Java代码)首先为物理对象定义一个类怎么样?

我需要用Java编写一个非常简单的3D物理模拟器,立方体和球体相互碰撞,仅此而已。我从来没有做过那样的事,我该从哪里开始呢?有关于如何完成的文档吗?有我可以重复使用的库吗?

假设你想开始学习如何使用,最好的开始方法是用笔和纸。开始定义应用程序的焦点(如实体球体、立方体等,重力、碰撞等规则,确定对象的层次结构等)

如果您知道如何做到这一点,并且希望获得技术方面的入门知识,那么Swing是在Java中创建UI的一个不错的选择

请看这里:

(不是Java)


(Java代码)

首先为物理对象定义一个类怎么样?它有位置、速度、质量,可能还有形状、弹性等其他特征的子类


然后创建一个放置这些物理对象的宇宙(类)。听起来很有趣:)

如果你只需要模拟球体/圆和立方体,那么你只需要一点向量数学


例如,要模拟一个简单的台球游戏,每个球(球体)都有一个位置、三维线速度和三维线加速度矢量。您的模拟将涉及许多小帧,这些帧会不断更新每个球。如果两个或多个球发生碰撞,只需对矢量求和,并计算所有球的新速度。例如,如果一个球撞到墙上,所需要做的就是翻转球的符号使其反弹…

如果你想从头开始做这件事,这意味着你要编写自己的物理引擎,你必须知道后面的数学的来龙去脉才能完成这项工作。如果你有一个相当好的数学背景,你将有一个良好的开端,否则一个陡峭的学习曲线是前面

您可以从这个社区论坛开始收集有关如何完成工作的信息:


当然,如果您不想自己编写代码,您可以使用开源引擎。

查看bulletphysics。是讷河论坛还是39版是一个很好的起点,它是C++的,但理论很容易理解。< /P> < P>一个很好的java物理库是JMyPosiple();它非常容易使用,并且位于ODE()和jmonkeyengine()之上,它们为您提供了一个scenegraph(),这也是除了一个非常简单的3d应用程序之外,您还需要的东西


虽然我已经有一段时间没有使用它了,但我看到它们自2007年底以来就没有发布过,所以我不确定社区现在有多活跃。

这不是物理:没有重力,没有弹性,等等。作为一个起点很有趣,但很有限。其中大多数只是被分解到每个框架中的附加向量。一旦你有了简单的工作,就不难添加重力、coR等。