I want to rotate a given 2D (!) Vector, is there a WPF built-in function for this?
Currently I’m doing it manually:
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);
I think this should be also possible by multiplying the given vector with a rotation matrix? Anyways, I don’t get it, can someone please give me an example? Thanks!
You should have a look at System.Windows.Media.Matrix.Rotate(…). Using this method, you can create a rotation matrix which you can then apply to your vector using the static Vector.Mulitply(…) method or the Matrix.Transform(…) method.
I have never used the Matrix class so far, but my first idea was to use something like this:
Note that the Matrix class uses 3×3 matrices, but that does not mean it is intended for 3D. It is rather intended for 2D (as you can read in the documentation). The additional parameters are used for combining a translation with another transformation in one transformation. See Homogenous coordinates for details.