Skip to content

Instantly share code, notes, and snippets.

@nariakiiwatani
Last active July 4, 2020 13:15
Show Gist options
  • Save nariakiiwatani/f17903dcbe8099ae97490ba857c94255 to your computer and use it in GitHub Desktop.
Save nariakiiwatani/f17903dcbe8099ae97490ba857c94255 to your computer and use it in GitHub Desktop.
(defn limb
{:params [{:label "p0" :type "vec2"}
{:label "p1" :type "vec2"}
&
{:label "children" :type "any"}]
:handles
{:draw (get (get (meta line) :handles) :draw)
:drag (fn [{:id id :pos p :prev-pos pp :params [p0 p1 & children]}]
(let [d (vec2/- p pp)]
(concat [(vec2/+ p0 d) (vec2/+ p1 d)] (repeat d (count children)))))
}
:inverse (fn [d [p0 p1 & children]]
(concat [(vec2/+ p0 d) (vec2/+ p1 d)] (repeat d (count children))))
}
[p0 p1 & children]
(concat [(line p0 p1)] children))
(defvar p0 [-100.96529299020767 5.281272828578949])
(defvar p1 [-79.83858680725098 31.75658400123939])
(defvar p2 [-34.12017521262169 -1.5523164444603026])
(defvar p3 [4.233701974153519 -0.8440990024246275])
(style (stroke "red" 5)
(limb p0 p1 (limb p1 p2) (limb p2 p3 [-2.4787610471248627 -1.0623261630535126]))
)
(repeat [0 10] (count [0 0]))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment