如何旋转Vector2?

dar*_*y89 2 .net c# xna


我正在尝试旋转Vector2但没有任何效果.
我试过以下 - >没有用:

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

我尝试过使用旋转矩阵 - >没用

我究竟做错了什么 ?:/

angle = MathHelper.Pi;
direction.X = (int)((direction.X) * Math.Cos(angle) - direction.Y * Math.Sin(angle));
direction.Y = (int)((direction.X) * Math.Sin(angle) + direction.Y * Math.Cos(angle));

float angle = MathHelper.PiOver2;
Vector2 dir = new Vector2(direction.X, direction.Y);
Vector2.Transform(dir, Matrix.CreateRotationX(angle));
direction = new Point((int)dir.X, (int)dir.Y);
Run Code Online (Sandbox Code Playgroud)

Pau*_*ane 10

Vector2.Transform()返回结果而不是就地应用更改.

var transformed = Vector2.Transform(dir, Matrix.CreateRotationX(angle)); direction = new Point((int)dir.X, (int)dir.Y);
Run Code Online (Sandbox Code Playgroud)

  • 不要对自己太苛刻.这是一类错误,你会发现自己每年重复一次(每次都有相同的混淆),以便在你的其余编程时间内完成. (4认同)