Комбинации преобразований
Кроме базовых преобразований, рассмотренных в прошлом разделе, есть дополнительные возможности.
Сложное преобразование
Преобразования могут комбинироваться друг с другом согласно правилу умножения линейных операторов. Следует учесть, что эти преобразования не коммутативны.
Следующие операции эквивалентны:
model.rotateX(deg(30)).up(10)
(up(10) * rotateX(deg(30)))(model)
Здесь up(10) * rotateX(deg(30))
выступает в роли сложного преобразования.
С помощью оператора умножения можно комбинировать любые гомогенные преобразования.
Единичное преобразование
Специальное преобразование, никак не изменяющее объект.
nulltrans()
Множественное преобразование
Оператор множественного преобразования создаёт объединение преобразований объекта прототипа. transes - массив преобразований.
multitrans(transes)
Пример:
def extrans(): return multitransform([
translate(10,0,0) * rotateZ(deg(60)),
translate(10,10,0) * rotateZ(deg(120)),
translate(0,10,0) * rotateZ(deg(180)),
nulltrans()
])