Vector XNA二维矢量角-什么';计算的正确方法是什么?

Vector XNA二维矢量角-什么';计算的正确方法是什么?,vector,xna,2d,angle,direction,Vector,Xna,2d,Angle,Direction,二维XNA中矢量角的标准工作方式是什么 向右0度,向上90度,向左180度,向下270度 的“标准”实现是什么 float VectortoAngle(Vector2 vec) 及 所以向量ToAngle(AngleToVector(PI))==PI?回答第一个问题,向上0度,向右90度,向下180度,向左270度。是一个简单的2D XNA旋转教程,为您提供更多信息 至于将向量转换为角度和角度,我发现了两个很好的实现: 此外,如果您是2D编程新手,您可能需要深入研究,这为您提供了很多信息。如果

二维XNA中矢量角的标准工作方式是什么

向右0度,向上90度,向左180度,向下270度

的“标准”实现是什么

float VectortoAngle(Vector2 vec)


所以向量ToAngle(AngleToVector(PI))==PI?

回答第一个问题,向上0度,向右90度,向下180度,向左270度。是一个简单的2D XNA旋转教程,为您提供更多信息

至于将向量转换为角度和角度,我发现了两个很好的实现:

此外,如果您是2D编程新手,您可能需要深入研究,这为您提供了很多信息。如果您付费为XNA开发,您可以免费获得引擎二进制文件,并且有一个实用程序类,它可以从角度转换为向量和向量,以及其他类似的有用函数

编辑:正如拉涅利在评论中指出的那样,当上升为0度时,该函数没有意义。这里有一个(向上是(0,-1),右边是(1,0),向下是(0,1),左边是(-1,0):


我还想指出,我使用Torque已经有一段时间了,它使用0度表示up,这就是我得到该部分的地方。up的意思是,在本例中,以文件中相同的方式将纹理绘制到屏幕上。因此,down会将纹理绘制为上下颠倒。

对于某个角度的方向没有约定在XNA中显示,因此您可以随意定义它


我不确定我上一次在游戏中使用角度是什么时候。几乎在所有情况下,直接使用向量都更容易,如果一开始就不那么直观。

有些问题。你说向上0度,但你的函数返回(1,0),这在我所见过的大多数坐标系中都是正确的,为0度。
Vector2 AngleToVector(float angle)
Vector2 AngleToVector(float angle)
{
    return new Vector2((float)Math.Cos(angle), (float)Math.Sin(angle));
}

float VectorToAngle(Vector2 vector)
{
    return (float)Math.Atan2(vector.Y, vector.X);
}
Vector2 AngleToVector(float angle)
{
    return new Vector2((float)Math.Sin(angle), -(float)Math.Cos(angle));
}

float VectorToAngle(Vector2 vector)
{
    return (float)Math.Atan2(vector.X, -vector.Y);
}