home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Dream 52
/
Amiga_Dream_52.iso
/
RiscOS
/
APP
/
DEVS
/
LISP
/
CLISP.ZIP
/
CLisp
/
lsp
/
dragon
< prev
next >
Wrap
Lisp/Scheme
|
1992-10-02
|
1KB
|
44 lines
;; DRAGON.L FOR PC-LISP V2.10
;; Modified for xlisp 2.1d (w. graphics extensions) by Tom Almy
;; ~~~~~~~~~~~~~~~~~~~~~~~~~~
;; Draw an Nth order Dragon Curve requires Turtle.l routines to run.
;; Taken From Byte April 1986. Try (DragonCurve 16) then put on supper,
;; watch the news and come back in an hour and see the results. It takes
;; about 1/2 hour on my machine so on a normal IBM-PC it should take about
;; an 1.5 hours.
;;
;; Peter Ashwood-Smith.
;; April 1986
;;
;; P.S - This dragon is nicknamed "spot"
#-:turtle (load "turtle")
(defvar *StepSize* 1)
(defun Dragon(sign level)
(if (zerop level)
(TurtleForward *StepSize*)
(progn
(setq level (1- level))
(TurtleRight (* 45 sign))
(Dragon -1 level)
(TurtleLeft (* 90 sign))
(Dragon 1 level)
(TurtleRight (* 45 sign))
)
)
)
(defun DragonCurve (n m)
(setq *StepSize* m) ; *StepSize* is global variable
(TurtleGraphicsUp)
(TurtleCenter)
(TurtleGoto 50 50)
(TurtleRight 30) ; angle the serpent a bit
(Dragon 1 n)
(gc)
)
(print "Try (DragonCurve 14 1)")