我应该在这里说明这一点,我不在数学人员附近。我在另一个问题中发现的代码似乎有点工作...除了它导致我放置的对象大部分在屏幕外旋转。围绕中心vector2点的物体的旋转
下面的代码:
public void Update(GameTime gameTime)
{
Location = RotateAboutOrigin(Center, Origin, 0.01f);
}
public Vector2 RotateAboutOrigin(Vector2 point, Vector2 origin, float rotation)
{
var u = point - origin; //point relative to origin
if (u == Vector2.Zero)
return point;
var a = (float)Math.Atan2(u.Y, u.X); //angle relative to origin
a += rotation; //rotate
//u is now the new point relative to origin
u = u.Length() * new Vector2((float)Math.Cos(a), (float)Math.Sin(a));
return u + origin;
}
位置由围绕中心载体的任意位置点击鼠标设置。
中心是我点击时放置的对象的中心(你猜对了)。这是通过简单地划分纹理的高度和宽度来确定的。
原产地是vector2我试图旋转。它静态设置为384,384。
尽我所知,它得到两个向量之间的距离,然后使用atan2来确定角度。其余的事对我来说是个谜。我知道我应该知道一切都做了什么,而且我准备在春季开始上大学时(仅延迟十年)。我试着读过它们,但我迷路了。任何帮助,将不胜感激。另外,如果你有一个很好的傻瓜网站,你可以推荐,我很乐意通读它。
http://stackoverflow.com/questions/7846775/how-to-gradually-rotate-an-object-to-face-another-turning-the-shortest-distance – Olle89