WPF:旋转2D矢量

时间:2010-04-15 13:19:15

标签: wpf vector rotation

我想旋转给定的2D(!)向量,是否有WPF内置函数? 目前我手动完成:

        Vector v = new Vector();
        v.X = 10; v.Y = 10;

        Vector v2 = new Vector();

        v2.X = v.X * Math.Cos(-90 * 180 / Math.PI) - v.Y * Math.Sin(-90 * 180 / Math.PI);
        v2.Y = v.Y * Math.Cos(-90 * 180 / Math.PI) + v.X * Math.Sin(-90 * 180 / Math.PI);

我认为通过将给定向量乘以旋转矩阵也可以实现这一点?无论如何,我不明白,有人可以举个例子吗?谢谢!

1 个答案:

答案 0 :(得分:6)

你应该看看System.Windows.Media.Matrix.Rotate(...)。使用此方法,您可以创建一个旋转矩阵,然后使用静态Vector.Mulitply(...)方法或Matrix.Transform(...)方法将其应用于矢量。

到目前为止,我从未使用过Matrix类,但我的第一个想法是使用类似的东西:

Matrix m = Matrix.Identity;
m.Rotate(90);
Vector v2 = m.Transform(v);

请注意,Matrix类使用3x3矩阵,但这并不意味着它适用于3D。它更适用于2D(您可以在文档中阅读)。附加参数用于将转换与一个转换中的另一个转换组合。有关详细信息,请参阅Homogenous coordinates