WPF: повернуть 2D вектор - PullRequest
3 голосов
/ 15 апреля 2010

Я хочу повернуть заданный 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);

Я думаю, что это также возможно, если умножить данный вектор на матрицу вращения? В любом случае, я не понимаю, кто-нибудь может дать мне пример? Спасибо!

1 Ответ

6 голосов
/ 15 апреля 2010

Вы должны взглянуть на 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 (как вы можете прочитать в документации). Дополнительные параметры используются для объединения перевода с другим преобразованием в преобразовании one . Подробнее см. Гомогенные координаты .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...