gpt4 book ai didi

physics - 重力模拟

转载 作者:行者123 更新时间:2023-12-02 12:21:36 28 4
gpt4 key购买 nike

我想模拟自由落体和与地面的碰撞(例如弹跳球)。物体将在真空中下落——可以忽略空气阻力。与地面的碰撞会导致一些能量损失,因此物体最终会停止移动。我使用 JOGL 渲染一个点,它是我的下落物体。重力恒定 (-9.8 m/s^2)。

我找到了一种欧拉方法来计算点的新位置:

deltaTime = currentTime - previousTime;
vel += acc * deltaTime;
pos += vel * deltaTime;

但我做错了什么。该点弹跳几次,然后向下移动(非常慢)。

这是一个伪代码(初始 pos = (0.0f, 2.0f, 0.0f),初始 vel(0.0f, 0.0f, 0.0f),重力 = -9.8f):

display()
{
calculateDeltaTime();
velocity.y += gravity * deltaTime;
pos.y += velocity.y * deltaTime;

if(pos.y < -2.0f) //a collision with the ground
{
velocity.y = velocity.y * energyLoss * -1.0f;
}

}

实现真实效果的最佳方法是什么?欧拉方法如何引用等加速度方程?

最佳答案

因为浮点不能很好地舍入,所以你永远不会得到实际上为 0 的速度。你可能会得到类似 -0.00000000000001 之类的东西。

当它足够接近时,您需要将其设为 0.0。 (定义一些增量。)

关于physics - 重力模拟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7013551/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com