summaryrefslogtreecommitdiff
path: root/src/turtle-system.lisp
diff options
context:
space:
mode:
authorBruno Cichon <ebrasca.ebrasca@gmail.com>2016-07-13 20:59:48 +0200
committerBruno Cichon <ebrasca.ebrasca@gmail.com>2016-07-13 20:59:48 +0200
commitdc3586f6bb9340c9e06ce31f684c2e23ed3ce988 (patch)
tree9588227700135c16473da5e78846397a3daa649f /src/turtle-system.lisp
parentd1b75911a434f727a5b37381aa0dc7a80447a7f1 (diff)
Miscellaneous renaming. Deleted unrelated code.
Diffstat (limited to 'src/turtle-system.lisp')
-rw-r--r--src/turtle-system.lisp123
1 files changed, 0 insertions, 123 deletions
diff --git a/src/turtle-system.lisp b/src/turtle-system.lisp
deleted file mode 100644
index 48f1f91..0000000
--- a/src/turtle-system.lisp
+++ /dev/null
@@ -1,123 +0,0 @@
-;;;; turtle-system.lisp
-
-(in-package #:l-system)
-
-;;;(matrix* translate rotate scale)
-
-(export '(f j + - & ^ q / [ ]))
-
-(defvar coor-sys (identity-matrix))
-(defvar stack '())
-
-(defun turtle-system (fn list)
- (iter (for item in list)
- (case (car item)
- ;;Move forward one unit,adding data to mesh.
- ((f)
- (let ((new-coor-sys (mtranslate coor-sys
- (vec* (vec 0.0 1.0 0.0)
- (cadr item)))))
- (appending (funcall fn coor-sys new-coor-sys (cdr item)))
- (setf coor-sys new-coor-sys)))
- ;;Move forward one unit,without adding data to mesh.
- ((j)
- (setf coor-sys (mtranslate coor-sys
- (vec* (vec 0.0 1.0 0.0)
- (cadr item)))))
- ;;Rotate left on axis z
- ((+)
- (setf coor-sys (mrotate
- (get-axis coor-sys 2)
- coor-sys
- (cadr item))))
- ;;Rotate right on axis z
- ((-)
- (setf coor-sys (mrotate
- (get-axis coor-sys 2)
- coor-sys
- (- (cadr item)))))
- ;;Rotate left on axis y
- ((&)
- (setf coor-sys (mrotate
- (get-axis coor-sys 1)
- coor-sys
- (cadr item))))
- ;;Rotate right on axis y
- ((^)
- (setf coor-sys (mrotate
- (get-axis coor-sys 1)
- coor-sys
- (- (cadr item)))))
- ;;Rotate left on axis x
- ((q)
- (setf coor-sys (mrotate
- (get-axis coor-sys 0)
- coor-sys
- (cadr item))))
- ;;Rotate right on axis x
- ((/)
- (setf coor-sys (mrotate
- (get-axis coor-sys 0)
- coor-sys
- (- (cadr item)))))
- ;;Push the current turtle state onto a stack
- (([)
- (push (copy-seq coor-sys)
- stack))
- ;;Pop the turtle stack, restoring an earlier state
- ((])
- (setf coor-sys (pop stack))))
- (finally (init))))
-
-;;; Turgle utils
-
-(defun init ()
- (setf coor-sys (identity-matrix)
- stack '()))
-
-(defun list-of-vectors->list (list-of-vectors)
- (iterconcat #'(lambda (vec)
- (concatenate 'list
- vec))
- list-of-vectors))
-
-(defun mtranslate (matrix vec)
- (matrix* matrix
- (translate vec)))
-
-(defun mrotate (axis matrix radians)
- (matrix* matrix
- (rotate-around axis radians)))
-
-(defun get-axis (matrix column)
- (vec (mref matrix 0 column)
- (mref matrix 1 column)
- (mref matrix 2 column)))
-
-(defun get-vec (matrix)
- (transform-point (vec 0.0 0.0 0.0)
- matrix))
-
-;;; Test geometry
-
-(defun cube (matrix0 matrix1)
- (let ((x0 (get-axis matrix0 0))
- (y0 (get-axis matrix0 1))
- (z0 (get-axis matrix0 2))
- (pos0 (get-vec matrix0))
- (x1 (get-axis matrix1 0))
- (y1 (get-axis matrix1 1))
- (z1 (get-axis matrix1 2))
- (pos1 (get-vec matrix1)))
- (list
- pos0 pos1 (vec+ pos0 x0)
- (vec+ pos0 x0) (vec+ pos1 x1) pos1
-
- (vec+ pos0 z0) (vec+ pos0 (vec+ x0 z0)) (vec+ pos1 z1)
- (vec+ pos0 (vec+ x0 z0)) (vec+ pos1 z1) (vec+ pos1 (vec+ x1 z1))
-
- (vec+ pos0 x0) (vec+ pos1 x1) (vec+ pos0 (vec+ x0 z0))
- (vec+ pos0 (vec+ x0 z0)) (vec+ pos1 x1) (vec+ pos1 (vec+ x1 z1))
-
- pos0 pos1 (vec+ pos0 z0)
- (vec+ pos0 z0) pos1 (vec+ pos1 z1))))