Предполагая, что у меня есть класс, содержащий 3 вектора (один для положения, один для масштабирования и один для вращения), я могу использовать их для создания матрицы преобразования, которая символизирует положение, поворот и размер объекта в трехмерном пространстве. Затем я добавляю родительский / дочерний элемент. отношения между объектами, и я умножаю дочернюю локальную матрицу преобразования на глобальную родительскую, я получаю дочернюю глобальную матрицу, и это та, которую я использую для рендеринга объектов, поэтому, когда родитель вращается, дочерний элемент вращается вокруг него, как орбита. Мне нужно иметь возможность получить локальное преобразование дочернего элемента (не всю матрицу, а только отдельные компоненты). Я знаю глобальное преобразование ребенка и глобальное преобразование родителя.
Я могу получить локальное преобразование дочернего элемента, умножив глобальное преобразование дочернего элемента на преобразование родительского элемента в обратном порядке, однако мне ДЕЙСТВИТЕЛЬНО нужно уметь делать это специально:
1. Чтобы иметь возможность получить локальную позицию дочернего элемента, просто зная его глобальную позицию и глобальную позицию родителя БЕЗ генерации каких-либо матриц;
2. Чтобы иметь возможность получить локальное вращение дочернего элемента, просто зная его глобальное вращение и глобальное вращение родителя БЕЗ генерации каких-либо матриц;
3. Чтобы иметь возможность получить локальный масштаб дочернего элемента, просто зная его глобальный масштаб и глобальный масштаб родителя БЕЗ генерации каких-либо матриц;