-1

そのため、5 つの vector2 を回転させて、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 に答える