Dragon curve: Difference between revisions
Content added Content deleted
(simplify base geometry) |
(added PS code, modelled looking at the Basic code) |
||
Line 294: | Line 294: | ||
end. |
end. |
||
</pascal> |
</pascal> |
||
=={{header|Postscript}}== |
|||
<pre> |
|||
%!PS |
|||
%%BoundingBox: 0 0 550 400 |
|||
/ifpendown false def |
|||
/rotation 0 def |
|||
/srootii 2 sqrt def |
|||
/turn { |
|||
rotation add /rotation exch def |
|||
} def |
|||
/forward { |
|||
dup rotation cos mul |
|||
exch rotation sin mul |
|||
ifpendown |
|||
{ rlineto } |
|||
{ rmoveto } |
|||
ifelse |
|||
} def |
|||
/penup { |
|||
/ifpendown false def |
|||
} def |
|||
/pendown { |
|||
/ifpendown true def |
|||
} def |
|||
/dragon { % [ length, split, d ] |
|||
dup |
|||
dup 1 get 0 eq |
|||
{ 0 get forward } |
|||
{ dup 2 get 45 mul turn |
|||
dup aload pop pop |
|||
1 sub exch srootii div exch |
|||
1 3 array astore dragon pop |
|||
dup 2 get 90 mul neg turn |
|||
dup aload pop pop |
|||
1 sub exch srootii div exch |
|||
-1 3 array astore dragon |
|||
dup 2 get 45 mul turn |
|||
} |
|||
ifelse |
|||
pop |
|||
} def |
|||
150 150 moveto pendown [ 300 12 1 ] dragon stroke |
|||
% 0 0 moveto 550 0 rlineto 0 400 rlineto -550 0 rlineto closepath stroke |
|||
showpage |
|||
%%END |
|||
</pre> |
|||
=={{header|Python}}== |
=={{header|Python}}== |