1

次のコードを使用してベクトルを回転します。

   var newVectorX = Math.Cos(step) * normalizedVector.X 
                                 - Math.Sin(step) * normalizedVector.Y;

                var newVectorY = - Math.Sin(step) * (normalizedVector.X )
                                 + Math.Cos(step) * normalizedVector.Y;

正規化されたベクトルに行列を掛けることができるように、2x2の行列を作成しようとしました。結果は、座標ではなく、新しい回転ベクトルになります。

回転行列

残念ながらSystem.Windows.Media.Matrix、2x2行列はサポートされていません。これまでのところ、この回転行列の実装は見つかりませんでした。これをどのように実装しますか?

4

1 に答える 1

1

実際、System.Windows.Media.Matrixまさにあなたが必要としているものです。2x2 マトリックスが必要なように見えるかもしれませんが、3x3 マトリックスを使用すると変換も可能になります。a を使用して、System.Windows.Media.Matrix必要のない部分を無視してください。

Matrix rotate = Matrix.Identity;
rotate.Rotate(step * 180 / Math.PI);    // Rotate() takes degrees
Vector newVector = rotate.Transform(normalizedVector);
于 2013-02-20T09:33:12.400 に答える