1. Оператор i f выталкивает из стека два верхних элемента, воспринимаемые как логическая величина и процедура, и выполняет эту процедуру, если логическая величина равна true:

boo! proc i f -» -

2. Оператор el sei f выталкивает из стека три верхних элемента как параметры bool 1 procl proc2; оператор выполняет процедуру procl, если bool равно true; в противном случае выполняется процедура ргос2:

bool procl proc2 el seif -> - Пример. Проверка достижения правого поля При написании текстовых строк нам приходится проверять, достигнуто ли правое поле страницы. Процедура atEndOfLine производит проверку того, не вышла ли CP за пределы правого поля RM, и если да, то она вызывает определенную ранее процедуру doNewline:

/atEndOfLine{
currentpoint pop % get x position

% получаем позицию x

RM g % beyond right margin?

% за пределами правого поля?

{doNewLine} if % if so. go to next line

% если да. то переходим на следующую строку

} def
1028

Приложение Г. Введение в PostScript81

Пример. Мозаики Труше На рис. Г. 19 показан красивый орнамент, называемый «мозаикой Труше» («Truchet tiles») в честь Себастьяна Труше (Sebastien Truchet), который занимался такими орнаментами в 1704 году. Орнамент составлен посредством сочетания двух мотивов, приведенных на рис. Г.20, а и Г.20, б; они размещаются вплотную друг к другу и заполняют плоскость. Оба мотива идентичны, однако один из них повернут на 90°; орнамент составляется посредством случайного выбора этих мотивов. В результате получается совокупность непрерывных кривых (см. рис. Г.20, в), причем некоторые из них образуют «острова», а другие составляют непрерывные формы, извивающиеся по всей плоскости.

Г.19. Мозаики Труше

Рис. Г.19. Мозаики Труше На языке PostScript основной мозаичный мотив с рис. Г.20, в образуется как четверть окружности вместе с ее отражением относительно осей х и у. Процедура tile рисует эти две дуги радиуса rad в начале координат"opengl1_1113.html">⇐ Предыдущая| |Следующая ⇒