#!/usr/bin/env clojure
(+ (* 1 1) (* 4 (* 1 7)))
(require 'clojure.xml)
(def squaresize 10)
(defn make-rect [i j colour]
{:tag :rect
:attrs {:x (str (* i squaresize))
:y (str (* j squaresize))
:width (str squaresize)
:height (str squaresize)
:style (str "fill:", colour, ";stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1")}})
(defn adjust-list [rectlist]
(let [hmin (apply min (map first rectlist))
vmax (apply max (map second rectlist))]
(for [[a b c] rectlist] [(- a hmin) (- vmax b) c])))
(defn make-svg [objects]
{:tag :svg
:attrs {:width "100%"
:height "100%"
:version "1.1"
:xmlns "http://www.w3.org/2000/svg"}
:content (for [[i j c] (adjust-list objects)] (make-rect i j c))})
(defn svg-file [filename objects]
(spit (str filename ".svg") (with-out-str (clojure.xml/emit (make-svg objects)))))
(defn orange [n]
(if (< n 0)
(range 0 n -1)
(range 0 n 1)))
(defn make-composite-rectangle [h v hsquares vsquares colour]
(for [i (orange hsquares) j (orange vsquares)] [(+ i h) (+ j v) colour]))
(svg-file "windmill-29-1"
(concat (make-composite-rectangle 0 0 1 1 "red")
(make-composite-rectangle 1 0 7 1 "white")
(make-composite-rectangle -1 0 -7 -1 "white")
(make-composite-rectangle 0 1 -1 7 "green")
(make-composite-rectangle 0 -1 1 -7 "green")))
(svg-file "windmill-29-2"
(concat (make-composite-rectangle 0 0 1 1 "red")
(make-composite-rectangle 1 0 1 7 "white")
(make-composite-rectangle -1 0 -1 -7 "white")
(make-composite-rectangle 0 1 -7 1 "green")
(make-composite-rectangle 0 -1 7 -1 "green")))
(svg-file "windmill-29-3"
(concat (make-composite-rectangle -1 -1 3 3 "red")
(make-composite-rectangle 1 2 1 5 "white")
(make-composite-rectangle -1 -2 -1 -5 "white")
(make-composite-rectangle -2 1 -5 1 "green")
(make-composite-rectangle 2 -1 5 -1 "green")))
(svg-file "windmill-29-4"
(concat (make-composite-rectangle -1 -1 3 3 "red")
(make-composite-rectangle 1 2 -5 1 "white")
(make-composite-rectangle -1 -2 5 -1 "white")
(make-composite-rectangle -2 1 1 -5 "green")
(make-composite-rectangle 2 -1 1 5 "green")))
(svg-file "windmill-29-5"
(concat (make-composite-rectangle -2 -2 5 5 "red")
(make-composite-rectangle -3 2 -1 1 "white")
(make-composite-rectangle 3 -2 1 1 "white")
(make-composite-rectangle -2 -3 1 -1 "green")
(make-composite-rectangle 2 3 1 1 "green")))
No comments:
Post a Comment