Я хочу написать класс Custom Matrix, который позволит мне делать следующие вещи:
Matrix m = Matrix().identity();
m.rotateAngle(30);
m.scale(2.0);
m.scale(1.5);
m.rotateAngle(30);
Все вышеперечисленные операции ясны для меня, но теперь я хочу, чтобы это было так: я хочу написать такую функцию, как setRotationAngle или setScale, которая установит значение, которое прошло независимо от текущего значения
// for example:
m.setAngle(45); // clears the currentRotationAngle and then sets rotation to 45
Есть ли способ сделать это? или игровые моторы, и такие вещи просто перестраивают матрицу, если кто-то хочет установить какое-то свойство?
Есть ли какой-то учебник, который поможет мне понять эту проблему?
Я думаю, что вы действительно не понимаете, как работают матрицы преобразования и как они состоят. Возможно, я ошибаюсь, но если вы спросите об этом, я подозреваю, что это так.
Вы должны спросить себя: как бы я ответил на это (это о 2D)?
Рассмотрим квадрат в начале координат.
Повернуть с 4 градусами.
Переведите его (4,4).
Установите поворот на 10 градусов.
Что бы вы сделали на шаге, выделенном жирным шрифтом? Для меня это совершенно не имеет смысла.
Итак, я думаю, вам придется перестроить матрицу. Подумайте об использовании стека матриц, к которому вы можете нажать матрицы, к которым вы хотите вернуться позже, отбросив их.