27 lines
807 B
Clojure
27 lines
807 B
Clojure
(import '[java.awt Color Graphics]
|
|
'javax.swing.JFrame)
|
|
|
|
(defn deg-to-radian [deg] (* deg Math/PI 1/180))
|
|
(defn cos-deg [angle] (Math/cos (deg-to-radian angle)))
|
|
(defn sin-deg [angle] (Math/sin (deg-to-radian angle)))
|
|
|
|
(defn draw-tree [^Graphics g, x y angle depth]
|
|
(when (pos? depth)
|
|
(let [x2 (+ x (int (* depth 10 (cos-deg angle))))
|
|
y2 (+ y (int (* depth 10 (sin-deg angle))))]
|
|
(.drawLine g x y x2 y2)
|
|
(draw-tree g x2 y2 (- angle 20) (dec depth))
|
|
(recur g x2 y2 (+ angle 20) (dec depth)))))
|
|
|
|
(defn fractal-tree [depth]
|
|
(doto (proxy [JFrame] []
|
|
(paint [g]
|
|
(.setColor g Color/BLACK)
|
|
(draw-tree g 400 500 -90 depth)))
|
|
(.setBounds 100 100 800 600)
|
|
(.setResizable false)
|
|
(.setDefaultCloseOperation JFrame/DISPOSE_ON_CLOSE)
|
|
(.show)))
|
|
|
|
(fractal-tree 9)
|