我想旋转给定的 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);
我认为通过将给定向量乘以旋转矩阵也应该可以实现?无论如何,我不明白,有人可以给我一个例子吗?谢谢!
你应该看看System.Windows.Media.Matrix.Rotate(...) http://msdn.microsoft.com/en-us/library/system.windows.media.matrix.rotate.aspx。使用此方法,您可以创建一个旋转矩阵,然后使用静态函数将其应用于向量向量.乘法(...) http://msdn.microsoft.com/en-us/library/ms599350.aspx方法或矩阵变换(...) http://msdn.microsoft.com/en-us/library/ms607596.aspx method.
到目前为止,我从未使用过 Matrix 类,但我的第一个想法是使用这样的东西:
Matrix m = Matrix.Identity;
m.Rotate(90);
Vector v2 = m.Transform(v);
请注意,Matrix 类使用 3x3 矩阵,但这并不意味着它适用于 3D。它更适合 2D(正如您可以在文档中阅读的那样)。附加参数用于将翻译与另一个转换组合起来one转型。看齐次坐标 http://en.wikipedia.org/wiki/Homogeneous_coordinates#Use_in_computer_graphics了解详情。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)