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