我正在尝试旋转Vector2,但没有任何效果
我试过以下 - >不起作用:
x' = cos(angle)*x - sin(angle)*y & y' = sin(angle)*x + cos(angle)*y
我尝试过使用旋转矩阵 - >没用?
我做错了什么? :/
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);
答案 0 :(得分:10)
Vector2.Transform()会返回结果,而不是就地应用更改。
var transformed = Vector2.Transform(dir, Matrix.CreateRotationX(angle)); direction = new Point((int)dir.X, (int)dir.Y);
答案 1 :(得分:0)
您编写的第一种方法应该可行,如此处所示:http://www.oocities.org/davidvwilliamson/rotpoint.jpg
请记住存储原始值,并使用它们来确定新值,并且不要使用新的x值来计算y。或者将产品存储在单独的变量中。