重要提示:这个问题与“PhysX”完全没有关系,它是一个计算机游戏物理系统(对球类游戏等街机游戏中的物理很有用);PhysX 是 Unity3D 和其他游戏引擎内置的系统;PhysX 在这里完全无关紧要。
/////////////////更新(先读底部)//////////////////
我一直在记录值并搜索确切的问题所在,我想我找到了。我的代码中有这样的东西
Velocity += Acceleration * Time.deltaTime;
position += Velocity * Time.deltaTime;
现在的加速度大约是 0,0000000000000009..。随着代码的流动,速度应该会增加,浮动没有问题。但在开始时,地球的初始位置是 (0,0,23500f) 你可以在我最后给出的图表中看到这一点。
现在,当我将 speed * timedelta (此时类似于 0,00000000000000005)添加到 23500 的位置时,它基本上不会添加它。位置仍然是 (0, 0, 23500) 而不是 (0,0, 23500.00000000000005),因此地球不会移动,因此加速度不会改变。
如果我将地球的初始位置设置为 0,0,0 并且仍然将加速度设置为 0.0000000000000000009 以假设它的位置是(0,0,23500)然后“添加”速度* timedelta。它变得类似于 (0,0,000000000000000000005) 并保持增加。当 float 为 0 时,添加这么小的值是没有问题的。但如果浮点数类似于 23500,则它不会将小值相加。
我不知道这究竟是统一的问题还是c#的浮动。
这就是为什么我不能让它与小值一起工作。如果我能克服这一点,我的问题就会得到解决。
///////////////////////////////////////// /////////////////////////
我一直在开发 n 体物理学来模拟我们的太阳系,所以我一直在收集数据以使其尽可能逼真。但是数据大小存在问题。我搜索了互联网的每一点,我找不到人们如何克服这一点的单一解释。(如果他们是的话)所以我在这里尝试我的镜头。
因此,为了保持行星之间的距离、半径和“质量”的比率固定,我创建了一个 Excel 文件来计算所有数据。(因为为什么有人会在互联网上发布“如果地球上有“那个”半径图的话,地球的质量会是多少?)我会把 ss 作为附件。它基本上将行星的每个属性“标准化”或换句话说“缩放”到给定的参考。在这种情况下,我将参考作为“地球的半径”。
我在团结中工作,你知道,你不能在团结中使用“太大”或“太小”的价值观。所以我不得不把太阳系缩小,“很多!”
所以我使用牛顿万有引力定律,即 F = GMm/r^2,为了简单起见,我直接从所有其他物体中计算给定物体的 a = GM/r^2。
因此,地球“朝向太阳”的重力加速度的实际值大约为 0,000006 km/s^2,这对于统一使用来说是非常小的值,但它可以工作。然而,要获得这个值,1 我需要将地球的半径(比例)设置为 6371 单位,将太阳的比例设置为 696,342!,这太大而无法统一渲染。
所以我说,让地球的半径为 1,以单位为单位。所以,当半径发生变化时,一切都会发生变化,质量、距离……我保持了行星的密度,并从新的体积和新的半径计算质量。所有的计算都在附件中。
所以问题是,当我将地球的半径设为 1 时,对太阳的引力加速度变成了 0,0000000000009 之类的东西,这非常小。当然,Unity 不适用于该值。
所以,如果我改为增加地球的半径,那么太阳的质量和半径就会变得大得离谱,然后我就无法使用它。
我不知道其他人是如何解决这个问题的,他们做了什么来克服这个问题,但正如我从这里看到的,看起来不可能对太阳系进行逼真的 n 体模拟。(至少统一)
所以我需要有 10 个代表来发布图片-_-,我会提供链接。 http://berkaydursun.com/solar_system_simulator/data.PNG 另外一个目录是具有 n 体计算但具有 UNREALISTIC 值的工作实验太阳系模拟。它工作得很好,甚至看起来有点接近真实,但是不,它没有正确的比率^^如果你愿意,你可以在这里测试它http://berkaydursun.com/solar_system_simulator/
编辑:哇,我几乎每个段落都以“So”开头^^