Я программирую облегченную систему пользовательского интерфейса на C ++ (для нереального движка 4). У меня есть базовый класс элементов пользовательского интерфейса, который может добавлять дочерние элементы пользовательского интерфейса. Проблема, с которой я сейчас сталкиваюсь, связана с моим менеджером компоновки. Мне нужно, чтобы все элементы перемещались, масштабировались и вращались вместе с родительским элементом пользовательского интерфейса.
Элемент должен иметь возможность вращаться вокруг своей локальной оси, но все еще вращаться со своим родителем. Таким образом, мне нужен класс менеджера компоновки для итерации по всем элементам пользовательского интерфейса в иерархии и расчета размеров этих позиций и значений вращения.
Просто я не могу понять алгоритм преобразования дочерних элементов относительно его родителя.
Для каждого элемента известны следующие переменные: положение, размер, вращение (кватернион) и положение поворота. Это двухмерные векторы, за исключением вращения, которое является «плавающим».
Поскольку я хочу сохранить значения такими, какими они были до вычислений макета, я хочу, чтобы эти вычисленные значения хранились в отдельных переменных.
Любая помощь в этом была бы отправлена богом!
С наилучшими пожеланиями,
Oyvind
Задача ещё не решена.