旋转时确定一个点相对于另一个点的位置 - C# XNA

3
我有一个小矩形,中心点为一个点。我还有另外一个点,在矩形外面,当矩形垂直放置时,距离矩形中心点向左10像素。当这个矩形绕其中心旋转时,如何使得这个外部点相对于矩形保持在同一位置?
谢谢。

1
我不明白这个问题 - 因为你是围绕中心旋转,中心点不会移动,所以只需将外部点保持在完全相同的位置即可... - BlueRaja - Danny Pflughoeft
抱歉,我表述不清楚了 - 我的意思是保持外部点相对矩形旋转的位置不变。 - mg33
1
那么,使用相同的旋转中心以相同的角度旋转该点... - BlueRaja - Danny Pflughoeft
矩形并没有被旋转,它的旋转只是被设置了,然后通过SpriteBatch以该旋转角度进行绘制。 - mg33
1
当然它是这样工作的 - 即使框架不支持旋转向量(它确实支持 - 请参见下面我的答案),计算角度的sin/cos也是一件简单的事情。也许你应该复习一下三角和向量数学 - 你需要同时使用它们来编写游戏。 - BlueRaja - Danny Pflughoeft
2个回答

1

以下是在XNA中如何围绕另一个点旋转一个点的示例:

public Vector2 RotatePoint(Vector2 pointToRotate, Vector2 centerOfRotation, float angleOfRotation)
{
    Matrix rotationMatrix = Matrix.CreateRotationZ(angleOfRotation);
    return Vector2.Transform(pointToRotate - centerOfRotation, rotationMatrix);
}

1

从矩形的中心点开始“定位点”,然后将其移动到所需位置,最后从那里旋转。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接