короче /FS{gsave
короче
/FS{gsave setgray fill grestore stroke} def
% "хитрая" процедура заливки и обводки.
% уровень "серости" при заливке берется из стека
/halfray{gsave 0 100 rm 0 -100 rl -45 rotate 30 0 rl
closepath FS grestore} def
Из двух зеркально отраженных треугольников разного оттенка составим один луч. Чтобы отражение правильно работало, нужно, чтобы начало координат находилось в центре звезды:
/ray{gsave 0.5 halfray grestore
gsave -1 1 scale 0.9 halfray grestore} def
Теперь из четырех лучей составляется звезда. Нужно просто рисовать луч в цикле, поворачиваясь на 90 градусов:
/star{4 {ray 90 rotate} repeat} def
Роза ветров состоит из двух звезд, причем нижняя немного поменьше:
/windrose{currentpoint % положить в стек текущую точку
translate % перенести начало координат
gsave % сохранить состояние
0.9 0.9 scale % уменьшить чуть-чуть масштаб
45 rotate % повернуться для нижней звезды
star % сама нижняя звезда
grestore
star %
Индекс
Элементарные функции
Линейные уравнения
Нелинейные уравнения
Случайные числа