inspired by Pascal
inspired by Pascal code by N.Wirth
(A+DS=P) and
% Metafont code by Kees van der Laan
/S{0 R rlineto currentpoint stroke moveto}def
/T{90 rotate}def /TM{T 1 -1 scale}def
/H {TM dup
0 gt {1 sub H S TM H S H T S -1 1
scale H 180 rotate 1 add} if
TM}def
/R 8 def
100 100 moveto
4 H pop % Order of the curve
showpage
Нас интересует сейчас, конечно, рекурсивная процедура H. Распишем ее с подробным комментарием
/H{ % n -> n
% так описывают содержимое стека до и после
вызова процедуры
% в стеке лежит и сохраняется порядок
TM % это преобразование пространства
dup % копирование порядка
0 gt % условие выполнения действия
{1 sub H S TM H S H T S -1 1 scale H
180 rotate 1 add} % Само действие см. ниже
if
TM % повторное преобразование
}def
Поначалу важно заметить, что основную часть процедуры составляет некое действие, выполняемое только при положительном “порядке” - параметре, лежащем в стеке. Это действие начинается и заканчивается изменением этого
Индекс
Элементарные функции
Линейные уравнения
Нелинейные уравнения
Случайные числа