Skip to content

Instantly share code, notes, and snippets.

@bgnori
Created June 2, 2012 19:39
Show Gist options
  • Save bgnori/2859709 to your computer and use it in GitHub Desktop.
Save bgnori/2859709 to your computer and use it in GitHub Desktop.
(defn blocks-in-radiaus-xz
[world center inner outer]
(let [center-block (.getBlockAt world center)
grided-cetner-location (.getLocation center-block)
grided-cetner-vector (.toVector grided-cetner-location)
ux (Vector. 1.0 0.0 0.0)
uy (Vector. 0.0 1.0 0.0)
uz (Vector. 0.0 0.0 1.0)
inner-diameter (* 2 (Math/floor inner))
outer-diameter (* 2 (Math/ceil outer))
width outer-diameter
corner (.add (.add (.clone grided-cetner-vector) (.multiply (.clone ux) (- outer-diameter)))
(.multiply (.clone uz) (- outer-diameter)))
vs (for [dx (range 0 width)
dz (range 0 width)
:when (let [v (.add (.add (.clone corner) (.multiply (.clone ux) dx)) (.multiply (.clone uz) dx))]
(and
(< (.distance grided-cetner-vector v) (Math/ceil outer))
(> (.distance grided-cetner-vector v) (Math/floor inner))))]
(.add (.add (.clone corner) (.multiply (.clone ux) dx)) (.multiply (.clone uz) dx)))]
vs))
(defn place-blocks-in-circle
[world center inner outer place-fn]
; with fill. naive way.
(map
(fn [d]
(prn d);
;(place-fn d 0))
d
)
(blocks-in-radiaus-xz world center inner outer)
))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment