Created
August 6, 2020 04:54
-
-
Save nariakiiwatani/af49687ec5e1b8e715c6af0d746ebd78 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(defvar jack [-38 -67.1875]) | |
(defvar red0 [-31 -161.1875]) | |
(defvar red1 [-119 -171.1875]) | |
(defvar red2 [33 -116.1875]) | |
(defvar blue0 [-115 -78.1875]) | |
(defvar blue1 [84 50.8125]) | |
(defvar blue2 [22 -26.1875]) | |
(defvar blue3 [-81 -10.1875]) | |
(defvar size 10) | |
(def red [red0 red1 red2]) | |
(def blue [blue0 blue1 blue2 blue3]) | |
(defn nearest | |
[origin positions] | |
(reduce (fn [near pos] | |
(let [nearDist (vec2/dist origin near) | |
dist (vec2/dist origin pos) | |
] | |
(if (< dist nearDist) | |
pos | |
near | |
))) (first positions) positions) | |
) | |
(defn farest | |
[origin positions] | |
(reduce (fn [far pos] | |
(let [farDist (vec2/dist origin far) | |
dist (vec2/dist origin pos) | |
] | |
(if (> dist farDist) | |
pos | |
far | |
))) (first positions) positions) | |
) | |
(def key | |
(let [nearRed (nearest jack red) | |
nearBlue (nearest jack blue) | |
pos (farest jack [nearRed nearBlue]) | |
side (if (< (vec2/dist jack nearRed) (vec2/dist jack nearBlue)) | |
:red :blue) | |
distance (vec2/dist jack pos) | |
] | |
{ | |
:pos pos | |
:side side | |
:dist distance | |
} | |
)) | |
(defn scoreCircle | |
[pos size side] | |
(style | |
(fill (cond (= side :red) "#FFC0C0B0" :else "#C0C0FFB0")) | |
(circle pos size)) | |
) | |
;(prn key) | |
:start-sketch | |
(background "#88E46CF7") | |
(scoreCircle jack (get key :dist) (get key :side)) | |
(style | |
(stroke "white" 2) | |
(circle (get key :pos) (+ size 2)) | |
(line jack (get key :pos)) | |
) | |
(style | |
(fill "white") | |
(circle jack size) | |
) | |
(style | |
(fill "red") | |
(circle red0 size) | |
(circle red1 size) | |
(circle red2 size) | |
) | |
(style | |
(fill "blue") | |
(circle blue0 size) | |
(circle blue1 size) | |
(circle blue2 size) | |
(circle blue3 size) | |
) | |
(style | |
(stroke "#FFFF00" 3) | |
(map (fn [pos] (circle pos (+ size 3))) | |
(filter #(> (get key :dist) (vec2/dist jack %)) | |
(cond (= (get key :side) :red) red :else blue)) | |
) | |
) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment