Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- (defun split (P1 P2 P3)
- (list (list P1
- (list (/ (+ (car P1) (car P2)) 2) (/ (+ (cadr P1) (cadr P2)) 2))
- (list (/ (+ (car P1) (car P3)) 2) (/ (+ (cadr P1) (cadr P3)) 2)))
- (list (list (/ (+ (car P1) (car P2)) 2) (/ (+ (cadr P1) (cadr P2)) 2))
- P2
- (list (/ (+ (car P2) (car P3)) 2) (/ (+ (cadr P2) (cadr P3)) 2)))
- (list (list (/ (+ (car P1) (car P3)) 2) (/ (+ (cadr P1) (cadr P3)) 2))
- (list (/ (+ (car P2) (car P3)) 2) (/ (+ (cadr P2) (cadr P3)) 2))
- P3)))
- (defun calc (dreieck tiefe)
- (cond ((= 0 tiefe) dreieck)
- (t (calc (loop for i in dreieck append (apply 'split i)) (- tiefe 1)))))
- (defun draw_triangle (P1 P2 P3)
- (format nil "~%<polygon points=\"~,30f,~,30f ~,30f,~,30f ~,30f,~,30f\" fill=\"#000000\"/>"
- (car P1) (cadr P1)
- (car P2) (cadr P2)
- (car P3) (cadr P3)))
- (defun paint (L)
- (loop for i in L collect (apply 'draw_triangle i)))
- (defun build (name X Y dim)
- (with-open-file (svg name :if-exists :supersede :direction :output)
- (format svg "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"~Apx\" height=\"~Apx\">" X Y)
- (format svg "~{~A~}" (paint (calc `(((5 ,(- Y 5)) (,(/ X 2) 5) (,(- X 5) ,(- Y 5)))) dim)))
- (format svg "~%</svg>")))
- (build "bild.svg" 1024 768 12)
Advertisement
Add Comment
Please, Sign In to add comment