Применение матрицы вращения к вектору означает смещение его координат для выполнения эффекта вращения.
Применение матрицы поворота к модели в начале координат это не то же самое, например, при повороте модели в перемещенной позиции .
Самый распространенный способ повернуть объект « вокруг собственной оси » — это перевести его в исходное положение перед применением матрицы поворота, а затем перевести обратно в предыдущее положение:
Если вы этого не сделаете, вращение не будет происходить относительно оси объекта, поэтому форма слегка деформируется (см. рисунок).
Я хотел бы знать, есть ли способ напрямую вычислить правильное представление оси-угла, имитируя вращение вокруг собственной оси моего объекта одним способом, без перевода обратно в исходное положение?
Кроме того, я заметил, что при последующем использовании матриц углов Эйлера возникает « карданная блокировка », разбивая процесс на три матрицы вращения для , и оси. А как насчет матрицы поворота оси-угла, которая выполняет поворот за один шаг, а не за три:
Предотвращает ли такая матрица « карданную блокировку »? В чем разница между этой матрицей и матрицей, вычисленной из кватерниона (используя таблицу умножения кватернионов):
В трех измерениях а Матрица вращения может выполнять любое мыслимое вращение, которое вы можете захотеть для вектора.
Но вектор сам по себе не имеет «местоположения», вокруг которого можно вращаться. Он просто меняет направление. Даже большая коллекция векторов все еще не имеет «местоположения».
Тот факт, что вы хотите повернуть модель, у которой есть положение, означает, что вы имеете дело с пространственными координатами, а не просто с векторами. Один из способов работы с пространственными координатами, конечно, состоит в том, чтобы назначить одну точку в пространстве «началом» и идентифицировать каждую точку. с вектором из начала в Когда вы это сделаете, повороты по-прежнему изменяют направления векторов; поскольку мы по-прежнему идентифицируем каждую точку по ее вектору из начала координат, вращение этого вектора вращает эту точку вокруг оси, проходящей через начало координат.
Это означает, что начало координат, представленное нулевым вектором (все координаты равны нулю), никогда не перемещается, когда вы применяете матрица вращения в трех измерениях. На самом деле, несмотря ни на что матрицу, которую вы умножаете на нулевой вектор, вы все равно получаете нулевой вектор, даже если матрица не представляет собой истинное вращение.
Если вы хотите повернуть модель вокруг ее собственного центра, который не является исходной точкой, то, если вы случайно не выберете одну ось вращения, которая также проходит через исходную точку, ваше вращение сместит исходную точку. Следовательно, невозможно сделать с матрица.
Что вы можете сделать, если хотите, так это построить вращение на желаемый угол вокруг оси в желаемой ориентации (параллельно оси, которую вы действительно хотите). Тогда, если точка является центром вашего объекта, вычислите Теперь найдите вектор Затем вы можете выполнить желаемое вращение любой точки вокруг собственного центра вашего объекта, применяя вращение и перевод (добавляя вектор к координатам точки):
Теперь это всего лишь один перевод в дополнение к повороту.
Показанная вами матрица «поворот оси-угла», которая представляет собой Однако матрица на самом деле больше, чем просто матрица вращения. Это работает так, что любая точка представлен четырехкоординатным вектором,
Вы также можете просто взять верхний левый подматрицу вашей матрицы «ось-угол» и умножьте ее на трехкоординатный вектор от начала координат до каждой точки, но тогда это просто вращение вокруг начала координат, как и любой другой вращение матрицы в трех измерениях.
Избегает ли это «замка карданного подвеса», зависит от того, что вы хотите с ним делать. Если вы на самом деле используете его для отслеживания вращения трехосного стабилизатора, вы все равно можете «заблокировать» стабилизатор, проведя его через некоторую последовательность поворотов оси-угла. Если у вас есть свободно плавающий в пространстве объект, а не настоящий карданный вал, то может применяться «фиксация кардана», если вы используете набор углов Эйлера для представления каждой ориентации объекта относительно его исходной ориентации. Некоторая последовательность ориентаций заставит вас внезапно «перевернуть» один из ваших углов Эйлера, что является своего рода манипуляцией, которая «запирает» реальный подвес. То есть углы Эйлера — это своего рода вымышленный кардан. Но пока у вас нет настоящего или вымышленного стабилизатора, вы не можете его «заблокировать».
Разница между матрицами и кватернионами — это отдельный вопрос. Но когда они применяются к трехмерным вращениям, каждый по-своему, каждый представляет собой просто другой способ представления вращения. И у каждого свой способ подсчета результатов ротации. О любой из этих техник написано много, что вы можете изучить.
explogx
explogx
Дэвид К.
explogx
Дэвид К.
explogx
Дэвид К.
explogx
Дэвид К.
explogx
Дэвид К.