【发布时间】:2010-09-21 02:34:06
【问题描述】:
我知道这可能是一个非常简单的问题,但我似乎无法弄清楚。首先,我想说明我确实浏览了 Google 和 SO 半小时左右,但没有找到问题的答案(是的,我是认真的)。
基本上,我想围绕一个点旋转 Vector2(在我的情况下,它始终是 (0, 0) 向量)。因此,我尝试创建一个函数来执行此操作,参数为要旋转的点和要旋转的角度(以度为单位)。
这是一个快速绘图,显示了我想要实现的目标:
我想取V1(红色向量),将它旋转一个角度A(蓝色),得到一个新的向量(V2,绿色)。在此示例中,我使用了最简单的情况之一:轴上的 V1 和 90 度角,但我希望该函数也能处理更多“复杂”情况。
这是我的功能:
public static Vector2 RotateVector2(Vector2 point, float degrees)
{
return Vector2.Transform(point,
Matrix.CreateRotationZ(MathHelper.ToRadians(degrees)));
}
那么,我做错了什么?当我运行代码并使用 (0, -1) 向量和 90 度角调用此函数时,我得到向量 (1, 4.371139E-08) ...
另外,如果我也想接受一个旋转点作为参数怎么办?这样旋转并不总是发生在 (0, 0) 附近...
【问题讨论】: