многомерное векторное вращение и вычисление угла - как? - PullRequest
0 голосов
/ 08 апреля 2010

Вход: два многомерных (например, dim = 8) вектора a и b.

Мне нужно выяснить «направленный» угол (0-2 * Pi, а не 0-Pi) между этими векторамиа и б.И если они не параллельны, мне нужно повернуть вектор b в плоскости a, b на «направленный» угол L. Если они параллельны, плоскость не имеет значения, но угол поворота остается тем же L.

Для 2d и 3d это довольно просто, но для большего количества измерений я потерялся, я ничего не нашел в Google, и я предпочитаю использовать некоторые уже проверенные и проверенные уравнения (избегая ошибок, вызванных моими вычислениями :-D).1006 * Заранее спасибо за советы, ссылки и т. Д.

Ответы [ 2 ]

2 голосов
/ 08 апреля 2010

Вы можете найти эту статью полезной: Повороты для N-мерной графики от AJ Hanson .Есть также эта статья: Общие n-мерные повороты .Вы также можете проверить эту ветку форума , где куча людей пытаются решить это.И вот еще одна статья: О концепции жесткого вращения в n-мерных пространствах .Должен.Стоп.Погуглить.

1 голос
/ 08 апреля 2010

Я считаю, что вы должны работать на плоскости, сгенерированной вашими векторами a и b. Тогда код будет одинаковым независимо от размера (кстати, размерность векторов равна по определению размерность пространства).

Вы можете сделать это, ортогонализируя (a, b) как:

a' = a/||a||
b1 = b - (a'·b)a'  <-- scalar product denoted by ·
b' = b1/||b||

Теперь вы летите на ортонормированной основе и должны вернуться в бизнес. Координаты b в этом базисе (a '· b, b' · b). Для a это аналогично (|| a ||, 0). Если вы хотите вернуться в окружающее пространство, просто напишите свой вектор с координатами (x1, x2) как x1 a '+ x2 b'.

Надеюсь, математические обозначения не слишком запутаны.

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