{1 0 0} {0 0 1}
ifelse setrgbcolor fill grestore
currentpoint stroke shift}for
Заметьте, что конструкцию окраски в данном случае можно было бы написать и так:
gsave 0 0 1 3 eq {3 1 roll} if setrgbcolor
fill grestore
Но таких “трюков” современное программирование не одобряет!
Условные операторы открывают возможность еще одной разновидности циклов - рекурсивно исполняемые процедуры. Подробное обсуждение механизма рекурсии нам еще предстоит в этой главе, пока же рассмотрим программу, которая рисует так называемую ломаную Гильберта ( David Hilbert, 1862 - 1943, выдающийся немецкий математик).
Обратите внимание, что ломаная составлена из четырех одинаковых квадрантов - таких же кривых меньшего “порядка”, повернутых, зеркально отраженных и соединенных перемычками.
Рис. 2.
Вот полный текст рисующей программы, даже с минимальным комментарием (и, кстати, обратите внимание на начало постскриптовского файла - первые его два символа):
%! Joseph Romanovsky, 1995 (yet)
%