WPF:旋转2D矢量

ste*_*wpf 3 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);
Run Code Online (Sandbox Code Playgroud)

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

geh*_*hho 6

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

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

Matrix m = Matrix.Identity;
m.Rotate(90);
Vector v2 = m.Transform(v);
Run Code Online (Sandbox Code Playgroud)

请注意,Matrix类使用3x3矩阵,但这并不意味着它适用于3D.它更适用于2D(您可以在文档中阅读).额外的参数用于翻译与其他改造相结合一个转变.有关详细信息,请参阅同源坐标.