Допустим, у меня есть объект (A) с позицией, хранящейся в виде трехзначного вектора, и ориентацией, хранящейся в виде кватерниона.
У меня есть второй объект (B) с той же информацией.
Объект B по какой-то причине внезапно приварился к объекту A. Теперь он застрял и должен идеально перемещаться относительно объекта A.
Если объект B приклеен к углу объекта A, а объект A вращается, объект B должен находиться в том же относительном положении и ориентации в том же углу, что и раньше.
Чтобы проиллюстрировать то, что я прошу, это должно выглядеть примерно так:
До сих пор мне удавалось взять положение объекта B и преобразовать его с помощью обратной позиции/ориентации объекта A, сохранив точное относительное положение, а затем, когда объект A вращается, я просто преобразую относительное положение по положению/ориентации объекта A, и телепортируйте объект B в это место. Это удерживает объект B в углу A, как и ожидалось... однако это не поворачивает объект B, чтобы он соответствовал объекту A... как мне отслеживать относительную ориентацию, используя кватернионы или матрицы (углы Эйлера - это только наихудший сценарий, так как их вычисление дорого).
РЕДАКТИРОВАТЬ: У меня есть только кватернион до и кватернион после. Подробностей о самой ротации нет.
Кроме того, вращение произвольное и свободное, оно могло быть вокруг любой оси или сразу по нескольким осям.