XNA旋转无法正常工作

时间:2012-10-18 16:21:01

标签: xna rotation

所以,我正在尝试旋转5个vectors2s以获得目标(Vector2)作为它们的法线。但是当我旋转时它不能正常旋转。当目标指向上方并且verticies正常向右或向左(默认值:0,-1 0,0 0,1)时我必须将它们旋转90度,但是当我的结果不是-1,0 0,0 1时,它应该是什么。相反,它是这样的:-1,vs 0,0 1,-vs vs =非常小的数字。为什么是这样?有没有办法纠正这个?代码:

Vector2 target = new Vector2(0, 1); //Create target

Vector2[] vecs = new Vector2[3] { new Vector2(0, -1), Vector2.Zero, new Vector2(0, 1) }; //Create verticies to be rotated

Matrix matrix = Matrix.CreateRotationZ(MathHelper.ToRadians(90)); //Should be: (float)Math.Atan2(target.Y, target.X) instead of 90 but wanted to simplify this

Vector2.Transform(vecs, ref matrix, vecs); // Rotate

我甚至尝试用360度旋转完整转弯,但这并没有给我起始向量,这对我来说很奇怪。

1 个答案:

答案 0 :(得分:1)

为什么会这样?

因为浮点变量的精度。

有没有办法纠正这个问题?

我不知道一种方法,但我会忽略它。因为它几乎等于零。

普罗蒂普

使用给定的向量(x,y),( - y,x)或(y,-x)是该向量的法线。