Farseer (Box2D) - 通过使用双精度或小数而不是浮点数来增加最大世界大小?
Farseer (Box2D) - Increasing max world size by using doubles or decimals rather than floats?
我正在使用 Farseer Physics,它是用 C# 重写的 Box2D 的一个分支。
据我了解,Farseer/Box2D引擎对世界大小没有严格限制。据我所知,唯一的限制是随着世界规模的增加,精度将降低到可以看到故障的程度。目前,Farseer 对所有值(例如向量)使用 float
类型。通过用 double
或 decimal
等更高精度的类型替换所有浮点数来增加有效的最大世界大小?将它们换掉是否有任何有意义的缺点,还是非常简单的 1 对 1?
In my understanding, there is no strict limit on world size in the Farseer/Box2D engine. The only limitation, in my understanding, is that with increased world size the precision will decrease to a point where glitches are visible.
是的。有关这方面的参考,请参阅 What units does Box2D use?. Or Maximum World Size and Units.
By replacing all floats with a higher-precision type like double or decimal will that make the effective maximum world size increase?
为了清楚起见,我添加了斜体文本。
根据我的经验简短回答:有点,是的。
可以在 Switching JBox2D (Box2D) from Float to Double precision 中找到相关的在线讨论。
注意虽然max and least values for double are larger in magnitude than the max and least for float, there will still be limitations like from the settings that are optimized in part for single precision floating point format的float
类型不过。
Is there any meaningful downside to swapping these out or is it a pretty straight-forward 1-to-1?
以下是我可以预见的一些缺点:
- 一些计算会变慢,因为使用
double
比 float
增加了内存访问。
- 与
float
相比,double
的精度要求更高,因此某些计算会变慢。
- 应用程序的内存占用量和要求对于所有使用的双精度数都是浮点数的两倍。
- 部分设置已针对
float
进行了优化,因此您可能需要对它们进行更多调整以使用 double
。
但是这些是否有意义,将取决于个人情况和用户。我做了一个使用双打的太阳系演示,这样它所代表的一切都可以按比例表示,包括碰撞。诚然,我为此使用了 Box2D 衍生物理引擎,但原则上我认为这些东西也应该能够在 Box2D 中工作。
希望这对您有所帮助。
我正在使用 Farseer Physics,它是用 C# 重写的 Box2D 的一个分支。
据我了解,Farseer/Box2D引擎对世界大小没有严格限制。据我所知,唯一的限制是随着世界规模的增加,精度将降低到可以看到故障的程度。目前,Farseer 对所有值(例如向量)使用 float
类型。通过用 double
或 decimal
等更高精度的类型替换所有浮点数来增加有效的最大世界大小?将它们换掉是否有任何有意义的缺点,还是非常简单的 1 对 1?
In my understanding, there is no strict limit on world size in the Farseer/Box2D engine. The only limitation, in my understanding, is that with increased world size the precision will decrease to a point where glitches are visible.
是的。有关这方面的参考,请参阅 What units does Box2D use?. Or Maximum World Size and Units.
By replacing all floats with a higher-precision type like double or decimal will that make the effective maximum world size increase?
为了清楚起见,我添加了斜体文本。
根据我的经验简短回答:有点,是的。
可以在 Switching JBox2D (Box2D) from Float to Double precision 中找到相关的在线讨论。
注意虽然max and least values for double are larger in magnitude than the max and least for float, there will still be limitations like from the settings that are optimized in part for single precision floating point format的float
类型不过。
Is there any meaningful downside to swapping these out or is it a pretty straight-forward 1-to-1?
以下是我可以预见的一些缺点:
- 一些计算会变慢,因为使用
double
比float
增加了内存访问。 - 与
float
相比,double
的精度要求更高,因此某些计算会变慢。 - 应用程序的内存占用量和要求对于所有使用的双精度数都是浮点数的两倍。
- 部分设置已针对
float
进行了优化,因此您可能需要对它们进行更多调整以使用double
。
但是这些是否有意义,将取决于个人情况和用户。我做了一个使用双打的太阳系演示,这样它所代表的一切都可以按比例表示,包括碰撞。诚然,我为此使用了 Box2D 衍生物理引擎,但原则上我认为这些东西也应该能够在 Box2D 中工作。
希望这对您有所帮助。