diff options
author | Bruno Cichon <ebrasca.ebrasca@gmail.com> | 2015-08-18 02:59:08 +0200 |
---|---|---|
committer | Bruno Cichon <ebrasca.ebrasca@gmail.com> | 2015-08-18 02:59:08 +0200 |
commit | a6b3d525ebafa6ce8e9e01fcce750d1185aa626f (patch) | |
tree | a8953ca66bb1096592cd75b728ad7654577181ce /src/l-system.lisp | |
parent | 21e26667a6102ac521aee999be494f154e36b6a8 (diff) |
Add evaluation to l-system
Diffstat (limited to 'src/l-system.lisp')
-rw-r--r-- | src/l-system.lisp | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/src/l-system.lisp b/src/l-system.lisp index 5ea3801..d57c419 100644 --- a/src/l-system.lisp +++ b/src/l-system.lisp @@ -36,6 +36,14 @@ item)) (finally (return item)))) +(defun eval-l-system (fn list) + (iter (with seed = '(0 0 0)) + (for item in list) + (appending (setf seed + (mapcar #'+ + seed + (car (funcall fn item))))))) + #| (iterconcat (l-system (a a i a d a) (b b d b i b) @@ -53,4 +61,15 @@ A D A D B D A I A D A D A D B D A I A D A D A D B D B D B I B D A D B D B D B I B D A D B D B D B I B I B I A I B D B I B D A D B D A I A D A D A D B D B D B I B D A D B D) + +(eval-l-system (l-system (a (0.0 1.0 0.0)) + (b (0.0 -1.0 0.0)) + (i (-1.0 0.0 0.0)) + (d (1.0 0.0 0.0))) + (iter-l-system (l-system (a a i a d a) + (b b d b i b) + (i i b i a i) + (d d a d b d)) + '(d) + 3)) |# |