2013-02-20 3 views
1

поворачивать вектор, используя следующий код:Реализовать матрицу вращения 2х2 в C#

var newVectorX = Math.Cos(step) * normalizedVector.X 
           - Math.Sin(step) * normalizedVector.Y; 

       var newVectorY = - Math.Sin(step) * (normalizedVector.X) 
           + Math.Cos(step) * normalizedVector.Y; 

Я попытался создать матрицу 2х2, так что я просто не могу умножить свой нормированный вектор с матрицей. Результатом будет новый повернутый вектор вместо координат.

rotation matrix

К сожалению System.Windows.Media.Matrix не поддерживает матрицы 2х2. До сих пор я не мог найти реализацию этой матрицы вращения. Как бы вы это реализовали?

ответ

1

Фактически, System.Windows.Media.Matrix - это именно то, что вам нужно. Хотя может показаться, что вам нужна матрица 2x2, использование матрицы 3x3 также допускает переводы. Просто используйте System.Windows.Media.Matrix и проигнорируйте часть, которая вам не нужна.

Matrix rotate = Matrix.Identity; 
rotate.Rotate(step * 180/Math.PI); // Rotate() takes degrees 
Vector newVector = rotate.Transform(normalizedVector); 
+0

Matrix.Identity.Rotate не возвращает Matrix – Goot

+0

@Goot: К сожалению, вы правы. Спасибо за совет. – Gabe

+0

Для решения см. Мой комментарий выше – Goot