Комбинации преобразований

Кроме базовых преобразований, рассмотренных в прошлом разделе, есть дополнительные возможности.


Сложное преобразование

Преобразования могут комбинироваться друг с другом согласно правилу умножения линейных операторов. Следует учесть, что эти преобразования не коммутативны.

Следующие операции эквивалентны:

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()
])