-1

所以,我试图旋转 5 个vector2s 以使 target(Vector2) 成为它们的正常值。但是当我旋转时,它没有正确旋转。当目标指向上方并且顶点的正常向右或向左时(默认值:0,-1 0,0 0,1)我必须将它们旋转 90 度但是当我这样做时结果不是 -1,0 0,0 1, 0 应该是什么。相反,它类似于:-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 度旋转整圈,但这并没有给我起始向量,这对我来说很奇怪。

4

1 回答 1

1

为什么是这样?

这是因为浮点变量的精度。

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

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

专家提示

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

于 2012-10-18T20:21:29.420 回答