Как экстраполировать значения матрицы вращения?

Я использую chai3d api, который использует плавающую pt матрицу 3x3 для хранения ориентации объектов в моем виртуальном мире.

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

Я предсказываю положение объектов (например, куб opengl), отправляя значение положения и скорости.

Является ли угловая скорость для ориентации такой же, как скорость для положения?

если да, как рассчитать угловую скорость по этой матрице 3x3 и использовать ее для экстраполяции?

1 ответ

Матрица преобразования по существу является представлением новой системы координат в другой системе координат. Если вы добавите столбец, вы даже можете поместить перевод в него. Если вы помните свое исчисление и физику, то вы можете вспомнить

r = 1/2 a² t + v0 t + r0

v = d/dt r = a + v0

a = d/dt v

Чтобы перейти от скорости 'v' к позиции 'r', вы должны интегрировать. В случае скаляров вы умножаете v на время. Но скалярное умножение с матрицей будет просто масштабировать его, а не вращать. Таким образом, вы должны сделать что-то еще. Ключевое слово, если вы хотите сделать это с использованием матриц, это матричные полномочия, то есть вычисление мощностей матрицы.

Скажем, у вас есть дифференциальное вращение, d/dt R, тогда вы бы интегрировали это, умножая соответствующую матрицу вращения бесконечно часто на себя, т.е.

Но есть и математически более хороший способ сделать это. Нечто очень близкое к умножению на фактор. И это: использование кватернионов вместо матриц для представления ориентации. Оказывается, что простое масштабирование кватернионов такое же, как просто умножение на вращение, которое оно описывает.

Ключевые слова, по которым вы должны искать Google (потому что Stackru - это неправильное место для введения одного в целую теорию кватернионов):

Другие вопросы по тегам