【问题标题】:Unit of measurement in a game physics engine游戏物理引擎中的度量单位
【发布时间】:2012-04-27 13:04:06
【问题描述】:

在我的游戏中,我从加速度计获得加速度。 计算我的计算,我必须应用一个系数来转换像素单位的测量单位。

我应用为 Android 应用建立的系数(在示例中):

 DisplayMetrics metrics = new DisplayMetrics();
 getWindowManager().getDefaultDisplay().getMetrics(metrics);
 mXDpi = metrics.xdpi;
 mYDpi = metrics.ydpi;
 mMetersToPixelsX = mXDpi / 0.0254f;
 mMetersToPixelsY = mYDpi / 0.0254f;

我的加速,得到像素/秒^2。通过这种方式,我可以在代码中的任何地方使用像素,而不是全部以米为单位。

对吗?

【问题讨论】:

    标签: android physics units-of-measurement


    【解决方案1】:

    这将取决于你想要强加什么样的物理。 (这假设您需要牛顿力学。)如果您想跟踪设备的运动,那么您需要对加速度进行积分以获得速度,然后对速度进行积分以获得位置。或者我想,您可以跳过中间步骤并使用 0.5*acceleration^2 从“加速”转换为 change 位置(然后将该结果乘以您可能需要的适当比例因子通过实验确定)。 (第二种方法可能无法正确处理恒定运动。)对于每个独立维度,速度和位置将是具有这些递归关系的累积和:

    velocity[t] = acceleration[t] *(t -(t-1) ) + velocity[t-1]
    position[t] = position[t-1] + velocity[t]*(t -(t-1) )
    

    【讨论】:

    • 是的,我使用牛顿力学。我知道如何积分(verlet o eulerian integration),但我不确定测量单位。将加速度(来自加速度计)乘以该常数并获得像素/s^2 的加速度是否正确?
    • 您应该能够使用与用于距离的缩放因子相同的缩放因子来缩放加速度。
    • 加速是我唯一缩放的东西。我到处都使用像素,因为就像你上面的关系一样,唯一的测量单位是秒和米。仪表仅处于加速状态,如果我将其转换为像素/s^2,我也会获得距离像素。你觉得对吗?
    • 这在物理上听起来是正确的。加载和测试时它是如何工作的?
    • 我不知道,看起来还可以,但我的功能中还有一些其他的东西,比如摩擦。球似乎以太多的恒定速度移动。但这是另一回事。没有摩擦太快了。
    猜你喜欢
    • 2011-04-10
    • 1970-01-01
    • 2020-09-16
    • 2012-11-09
    • 2021-08-15
    • 1970-01-01
    • 2017-03-31
    • 1970-01-01
    • 2023-04-07
    相关资源
    最近更新 更多