定位最准确的数据类型

本文关键字:数据类型 定位 | 更新日期: 2023-09-27 17:50:39

这是非常恼人的事情。在XNA/Monogame中,SpriteBatch。Draw使用Vector2来表示位置,或者使用Rectangle来表示位置。Vector2接受float值,而Rectangles只接受int值。

我需要使用float/double,因为它们支持图像在屏幕上的平滑移动。然而,我注意到在做需要cos和sin, Truncate或任何数学转换函数的事情时,会出现特定的数学错误。

以这个公式为例:

for(int i = 0; i < 8; i++)
{
creategraphic(320+64*cos(360/8*i),240*+64*sin(360/8*i));
}

这应该创建8个纹理,在一个半径为64的圆上,并且均匀间隔。然而,结果却远非如此。我得到的值有对象从相同的角度生成,或者更糟。

那么对于定位,在处理复杂的数学计算时,最好的处理方法是什么?

定位最准确的数据类型

就像Alexei说的三角函数使用弧度而不是度数。XNA有一个帮助类,可以完成所需的转换:

https://msdn.microsoft.com/en-us/library/microsoft.xna.framework.mathhelper.toradians.aspx