如何在XNA中找到旋转变换的2D坐标?

Ste*_*ger 2 c# graphics xna 2d

我正在制作一个XNA游戏并遇到一个小问题,想出一些矢量数学.

我有一个类表示具有X和Y整数坐标的2D对象和一个旋转浮点数.我需要的是为Position获取一个Vector2属性,并将X和Y设置为使用Rotation float转换的Vector2.这样我就可以做一些事情;

Position += new Vector2((thumbstick.X * scrollSpeed), -(thumbstick.Y * scrollSpeed));
Run Code Online (Sandbox Code Playgroud)

并且物体将沿着它自己的向上方向移动,而不是视图的向上方向.

到目前为止这就是我所拥有的......我认为这个设置是正确的,但是对于+ =更改它需要得到一个并且答案就是现在没有找到我...>.>

public Vector2 Position
{
    get
    {
        // What goes here? :S
    }
    set
    {
        X = value.X * (int)Math.Cos(this.Rotation);
        Y = value.Y * (int)Math.Cos(this.Rotation);
    }
}
Run Code Online (Sandbox Code Playgroud)

duf*_*ymo 7

不,两者都不正确.

2D矢量转换如下:

x' =  x*cos(angle) - y*sin(angle)
y' =  x*sin(angle) + y*cos(angle)
Run Code Online (Sandbox Code Playgroud)

在以弧度为单位测量角度的情况下,零角度沿正x轴,并且当绕z轴绕平面旋转时,沿逆时针方向增加.旋转中心位于被变换的矢量的末尾,因此想象一下原点位于(0,0)的矢量,以(x,y)旋转一个角度结束,直到它成为原点位于(0,0的矢量) )并以(x',y')结束.

  • 我所知道的每个trig函数的实现都使用弧度,因此从这个意义上说它确实很重要.如果您使用计算机来解决此问题,请考虑弧度. (2认同)