我想旋转给定的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);
我认为通过将给定向量乘以旋转矩阵也可以实现这一点?无论如何,我不明白,有人可以举个例子吗?谢谢!
答案 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。