Created
June 28, 2020 13:23
-
-
Save nariakiiwatani/9305b4f4a52e21ddadd03dba708a3987 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
| (defn line-polar | |
| {:params [{:label "length" :type "number"} | |
| {:label "rot" :type "angle"}] | |
| :handles {:draw (fn [{:params [l r]}] | |
| [{:id "edge" :type "point" :pos (vec2/* [(cos r) (sin r)] [l l])}]) | |
| :drag (fn [{:id id :pos p :prev-pos pp :params [l r]}] [(vec2/dist [0 0] p) (+ r (calc-dragged-rotation :pos p :prev-pos pp))]) | |
| } | |
| } | |
| [l r] | |
| (transform (rotate r) | |
| (line [0 0] [l 0]))) | |
| (defn seconds | |
| {:inverse (fn [ret] [ret])} | |
| [sec] sec) | |
| (defn to-seconds | |
| {:inverse (fn [ret] [ret])} | |
| [sec] sec) | |
| (defn to-minutes [sec] (/ (to-seconds sec) 60)) | |
| (defn minutes | |
| {:inverse (fn [ret] [(to-minutes ret)])} | |
| [sec] (* (seconds sec) 60)) | |
| (def to-minutes | |
| ^(assoc (meta to-minutes) | |
| :inverse (fn [ret] [(minutes ret)])) to-minutes) | |
| (defn to-hours [sec] (/ (to-minutes sec) 60)) | |
| (defn hours | |
| {:inverse (fn [ret] [(to-hours ret)])} | |
| [sec] (* (minutes sec) 60)) | |
| (def to-hours | |
| ^(assoc (meta to-hours) | |
| :inverse (fn [ret] [(hours ret)])) to-hours) | |
| (deftime sec 20538.9020684615 :duration (hours 24)) | |
| (defvar speed 204.0695923038599) | |
| (defvar t (* sec speed)) | |
| (defvar size 100) | |
| (defn linear-map | |
| {:inverse (fn [ret [from to value]] [to from ret])} | |
| [from to value] | |
| (lerp (second to) (first to) (/ (- value (first from)) (- (second from) (first from)))) | |
| ) | |
| (defn to-seconds-angle | |
| {:inverse (fn [ret] [(linear-map [0 TWO_PI] [0 (minutes 1)] ret)])} | |
| [t] | |
| (linear-map [0 (minutes 1)] [0 TWO_PI] t)) | |
| (defn to-minutes-angle | |
| {:inverse (fn [ret] [(linear-map [0 TWO_PI] [0 (hours 1)] ret)])} | |
| [t] | |
| (linear-map [0 (hours 1)] [0 TWO_PI] t)) | |
| (defn to-hours-angle | |
| {:inverse (fn [ret] [(linear-map [0 TWO_PI] [0 (hours 12)] ret)])} | |
| [t] | |
| (linear-map [0 (hours 12)] [0 TWO_PI] t)) | |
| ;(transform (rotate (- HALF_PI)) | |
| (style (stroke "salmon" 10) (circle [0 0] size)) | |
| (style (stroke "black" 10) | |
| (line-polar (const 50) (to-hours-angle t))) | |
| (style (stroke "black" 5) | |
| (line-polar (const 100) (to-minutes-angle t))) | |
| (style (stroke "black" 1) | |
| (line-polar (const 100) (to-seconds-angle t))) | |
| ;) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment