как вращаться вокруг произвольной оси? - PullRequest
1 голос
/ 11 июля 2011

Гивенс

1- X, y, и Z мировая система координат 2-я, j, k другая система координат. 3 - косинус , в котором каждый из i, j и k состоит из X, Y, Z

проблема

  • как повернуть систему i, j, k относительно i или j или k ??

Ответы [ 2 ]

5 голосов
/ 11 июля 2011

Если у вас есть косинусы углов, образованные путем объединения каждого из i, j, k с каждым из xhat, yhat и zhat (всего девять углов), у вас есть составляющие для матрицы направляющих косинусов. Например, см. http://www.ae.illinois.edu/~tbretl/ae403/handouts/06-dcm.pdf (или просто косинусная матрица направления Google). Направляющая косинусная матрица - это просто другое название матрицы преобразования или вращения.

Будьте осторожны, хотя!
Единой стандартной схемы не существует. Вы должны знать, что это так, и внимательно читать литературу.

  • Вы вращаете объект или трансформируете координаты? Вращение и преобразование являются сопряженными операциями. Некоторые люди (многие люди!) Используют термин «матрица вращения», когда они означают «матрицу преобразования», и наоборот.
  • Вы представляете векторы как векторы столбцов или строки? Здесь есть намного больше последовательности; большинство людей используют векторы столбцов, а не векторы строк для таких вещей, как позиции, скорости и т. д. НО есть очень веские причины использовать векторы строк (или векторы столбцов, если вы один из этих противоположностей) для вещей, которые должным образом принадлежат двойственному пространству.
  • Кватернионы имеют даже большую неоднозначность представления, чем матрицы. В этом нет ничего плохого (я все время использую кватернионы), но вы должны остерегаться этих неясностей, когда читаете газету или книгу, просматриваете чужой код или обмениваетесь данными.
  • Наконец, матрицы и кватернионы являются лишь двумя из многих диаграмм на SO (3). Существует множество способов представления поворотов в 3-х пространствах.
1 голос
/ 11 июля 2011

Вы можете сначала создать матрицу вращения или кватернион.Затем вы используете это для преобразования ваших векторов.

Вы можете найти код для создания матрицы вращения или кватерниона практически в любой библиотеке 3D математики.

Если я правильно помню, вы рассчитали вращениекватернион как (при условии нормализованной оси):

q.x=axis.x*sin(alpha)
q.y=axis.y*sin(alpha)
q.y=axis.z*sin(alpha)
q.w=cos(alpha)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...