Revolver Drawing
This is a drawing of a revolver I made after being inspired by the cowboy theme of my group project. I added an argument to the make-arc
(rev-arc
) function allowing me to adjust the arcs size and create more complex shapes. I also made the frev
function which lets me adjust the "thickness" of my lines.
(defn draw [shape scale]
(js/browserdraw
(into-array (flatten shape))
scale))
(defn frev [initial-length]
[:fwd (* initial-length 1)])
(defn rev-arc [deg direction size]
(repeat deg [:fwd (* size 1) direction 1]))
(defn revolver []
(concat ;handle
[:color "#915500"]
[:right 20 (frev 60)]
(rev-arc 70 :right 1.2)
[:right 90 (frev 30)]
[:right 90]
(rev-arc 100 :left 0.5)
[(frev 40) :right 100 (frev 65)]
[:right 180 (frev 65) :left 100 (frev 40) (rev-arc 100 :right 0.5)]
;begin metal
[:color "#8b99ad"]
[(frev 5) (rev-arc 80 :right 0.1)]
[(rev-arc 90 :left 0.25) (frev 15)]
[(rev-arc 90 :left 0.25) (rev-arc 90 :right 0.1) (frev 40)]
[(rev-arc 50 :left 0.1) (frev 35)]
;barrel
[:right 60 (frev 100) :left 90 (frev 10) :left 90 (frev 100)]
[:right 90 (frev 18) (frev -28) (frev 10) :left 90]
[(frev -100) :right 90]
[:right 90 (frev 30) :left 90]
;front sight
[(frev 18) :left 90 (frev 22) (frev -12) :right 90 (frev 8) :left 90 (frev 12)]
[:left 90 (frev 8) :right 90 (frev (- 130 10 12))]
;around cylinder
[:right 15 (rev-arc 15 :left 2) (frev 60)]
[(rev-arc 30 :left 0.5) :left 60 (frev 10)]
[:right 50 (rev-arc 140 :left 0.45)]
[:right 180 (rev-arc 180 :right 0.45)]
[:right 90 (frev 51.5)]
;cylinder
[:left 90 (frev 61) :left 90 (frev (- (/ 51.5 2) 8))]
[:left 90 (rev-arc 15 :right 2)]
[(rev-arc 150 :right 0.08)]
[(rev-arc 15 :right 2)]
[:left 90 (frev -20) (frev 20) (frev (- (/ 51.5 2) 8))]
[:left 90 (frev 61)]
[(rev-arc 40 :left 0.45) :right 130 (frev 9)]
;hammer
[:left 90 :left 30 (frev 5) (rev-arc 90 :right 0.25) (frev 5)]
[(rev-arc 180 :left 0.03) (frev 8) (rev-arc 20 :left 1)]
[:right 70 (rev-arc 50 :left 0.56) :right 30]
[:left 90 (frev 8) (frev -9) :right 90 (frev 33)]
;trigger guard
[:left 90 (frev 7) :left 100 (rev-arc 90 :right 0.25)]
[:right 90 (rev-arc 45 :left 0.6) :right 180 (rev-arc 45 :right 0.6) :right 90]
[(frev 15) (rev-arc 90 :right 0.25) :left 90 (frev 10) :right 10]
)
)
(draw (revolver) 1.0)