Давайте рассмотрим простой случай, когда у нас есть объект с матрицей преобразования, а затем мы делаем простые преобразования:
- повернуть ось х на угол X1 -> матрица
- повернуть ось Y на угол Y1 -> матрица B
- повернуть ось x на угол X2 -> матрица C
В обычном случае я бы сделал C * B * A, и это было бы концом истории. Но, как мы знаем, он применяет новое преобразование в локальной системе координат, созданной предыдущим преобразованием. Мне это не нравится.
Что я хотел бы сделать в некоторых определенных ситуациях, так это вращаться в локальной, а иногда и в другой мировой системе координат. Я имею в виду, что если у меня есть матрица M = B * A (но у меня нет доступных углов X1 и Y1; все, что у меня есть, это M), и я хотел бы применить C в мировой системе координат тогда выходная новая матрица преобразования будет иметь следующий вид:
- x вращение = X1 + X2
- y вращение = Y1
Есть ли способ достичь этого?
EDIT
Я думаю, что объяснил неправильно.
Давайте предположим, что у нас есть объект A в положении, описанном матрицей M. M имеет вращение, масштабирование и перемещение. Я хотел бы вращать объект вдоль осей, расположенных в центре объекта A, но параллельно осям базовой системы координат. В конце концов, я также хотел бы, чтобы объект оставался в точке (x, y, z) в базовой системе координат.