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 矩阵也可以进行转换。只需使用 aSystem.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 回答