我们正在开发一款游戏,需要优化性能,每个CPU周期都很重要。我们使用弧度来计算物体绕其他物体旋转的位置,并希望在查找表中减少不必要的精度。为此,我们大量使用预定义的Pi。
所以,我的问题是:
- 什么样的精度足够准确?
- 或者更好的方法是,如何确定所需的精度?
我们正在开发一款游戏,需要优化性能,每个CPU周期都很重要。我们使用弧度来计算物体绕其他物体旋转的位置,并希望在查找表中减少不必要的精度。为此,我们大量使用预定义的Pi。
所以,我的问题是:
您最好将浮点数表示精确到可存储的精度。使用同一类型的更精确的浮点数进行计算不会花费更长时间。
精度通常以有效数字的个数来衡量;您需要自行决定您感兴趣的精度有多少位。如果您使用了一个不太准确的pi值,则该值的不准确性将传播到它所在的其他计算中。
double PI = (16.0 * atan(1/5)) - (4.0 * atan(1/239));
这将为您提供一个相当准确的PI值,您可以在启动时计算并根据需要重复使用。很难获得比这更精确且易于重复使用的版本。
不是很清楚你在做什么。你是根据角度查找坐标吗?在这种情况下,Pi的精度并不重要。重要的是查找表的大小,当然你会使用最高可能的精度预先计算它。除非你考虑将数据类型从单精度更改为双精度,否则进一步的精度不会增加执行时间。
如果您正在预先计算值,请尽可能准确地存储,但要真正了解所需的精度,您必须查看公式和其他组件的精度,然后确保您对π的精度与其他组件的精度相匹配。数值分析将为您提供足够的线索。
新的圆周率公式
Pi=2.m.sin(90/m)
Pi=3.m.sin(60/m)
Pi=4.m.sin(45/m)
Pi=5.m.sin(36/m)
对于数百万使用PI自由计算器XP、XM等的人来说,我们建议将m=1.0E+10000000设置为成功使用计算器所需安装的netframework2.0。