Результат определенно будет отличаться в зависимости от порядка преобразований.
Вот некоторые псевдокод, который отвечает на ваш вопрос непосредственно (при условии, каждая функция принимает в качестве параметров x,y,z
):
translate(-6, 0, 0)
rotate(0, 0, 135)
scale(2, 1, 1)
Теперь давайте посмотрим, почему это имеет значение порядка!
Во-первых, это то, что мы бы без каких-либо преобразований:
Далее, давайте посмотрим, что происходит, когда мы вращаем против часовой стрелки на 45 °, а затем перевести вдоль положительной оси X:
Обратите внимание, как перевод заставил квадрат двигаться в верхний правый угол? Это связано с тем, что преобразование вращения также изменяет локальные оси. Теперь положительный X указывает на верхний правый. Если мы повернем на 180 °, то + X будет указывать влево, а не вправо.
Теперь давайте посмотрим, что происходит, когда мы выполняем те же преобразования в обратном порядке:
На этот раз перевод переехал квадрат вправо, как и ожидалось. После этого квадрат повернулся.
Для получения более подробной информации обратитесь к open.gl page on Transformations, особенно по математике за всем этим.
Это очень полезно, спасибо! – Phantom