microbik.ru
  1 ... 3 4 5 6 7 ... 11 12

Поворот осей



Оператор rotate позволяет повернуть систему координат на заданный угол. Он берет из стека число, показывающее угол поворота осей в градусах (угол отсчитывается от вертикальной оси против часовой стрелки) и выполняет разворот. Снова нарисует наши три треугольника, но с поворотом осей.

/neworigin

{250 150 translate 60 rotate} def

/treangl

0 0 moveto

90 0 lineto

x y lineto

closepath fill} def

treangl

neworigin

treangl

neworigin

treangl

showpage

Изменение шкал по осям координат



Оператор scale позволяет изменить размер единицы измерения по каждой из осей координат. Он берет из стека два аргумента - коэффициенты изменения масштаба по осям x и y, соответственно, и с их учетом изменяет размер системных единиц. Например строка:

2 2 scale

увеличит размер системной единицы вдвое, т.е. объект будет рисоваться вдвое большего размера, чем до выполнения этой команды.

Задание. Напечатать треугольники из предыдущего примера используя следующие размеры системной единицы:

а) по умолчанию;

б) 1.5, 2.5;

с) 1.75, 1.

Сохранение состояния графики PostScript



До сих пор мы работали с графикой явным образом, меняя с помощью операторов ее состояние. Состояние графики - это набор данных, которые описывают, как операторы будут влиять на текущую страницу. Пара взаимодополняющих операторов, gsave и grestore, позволяют сохранить текущее состояние графики, а затем в нужный момент восстановить его. Это может потребоваться до и после использования оператора fill, который, как вы помните, очищает текущую траекторию. Если нужно продолжить рисование из какой-либо точки заполняемой оттенком серого фигуры, то удобно просто восстановить состояние графики , сохраненное до выполнения fill. Пример вы легко придумаете сами.

Оператор gsave сохраняет копию текущего состояния графики в стеке состояния графики. Этот стек может хранить до 32-х состояний графики, включая текущее состояние.

Оператор grestore восстанавливает состояние графики, сохраненное в стеке самым последним. Все характеристики текущего графического состояния, включая текущий путь уровень серого цвета, ширину линии и систему пользовательских координат возвращаются в состояние, в котором они были перед выполнением оператора gsave.
Занятие третье
Кривые

Для построения реального изображения одних отрезков прямых линий явно недостаточно. Поэтому в PostScript для построения нужных кривых, окружностей и дуг окружностей имеется ряд операторов. Во-первых, оператор arc. Он добавляет окружность к текущей траектории и требует наличия в стеке пяти аргументов:

- координат х, у центра окружности;

- радиуса;

- угла начала;

- угла конца дуги.

Угол строится против часовой стрелки:

100 100 42 30 110 arc

<рисунок 1 file R1.psc>

Аналогичный arc оператор arcn строит угол по часовой стрелке. Сравните:

100 100 42 30 110 arcn

<рисунок 2 file R2.psc>

Эти операторы ведут себя несколько иначе, если уже существует точка текущей траектории -- тогда дуга соединяется с ней прямой линией. Сравните:

newpath

150 200 60 30 150 arc stroke

<рисунок 3 file R3.psc>

и

newpath

150 200 moveto

150 200 60 30 150 arc stroke
<рисунок 4 file R4.psc>
Чтобы нарисовать окружность, нужно задать arc угол в 360 градусов, например:

150 200 60 0 360 arc

Задание 1. Используя оператор arc, нарисуйте произвольную ромашку с 4, 6 и 9 лепестками. Напишите процедуру, аргументом которой будет число лепестков.

Задание 2. Эллипсы можно получить, изменяя при рисовании окружности масштабы по осям координат. Напишите программу, в которой это используется.


<< предыдущая страница   следующая страница >>