Skip to content

Instantly share code, notes, and snippets.

@calebsmith
Created August 10, 2015 21:27
Show Gist options
  • Save calebsmith/2b7673e39219545d901f to your computer and use it in GitHub Desktop.
Save calebsmith/2b7673e39219545d901f to your computer and use it in GitHub Desktop.
Lisp hell
(defn perlin4 [x y z w]
(let [X (bit-and (int x) 255)
Y (bit-and (int y) 255)
Z (bit-and (int z) 255)
W (bit-and (int w) 255)
xx (- x (int x))
yy (- y (int y))
zz (- z (int z))
ww (- w (int w))
u (fade xx)
v (fade yy)
t (fade zz)
s (fade ww)
A (+ (p X) Y)
AA (+ (p A) Z)
AB (+ (p (+ A 1)) Z)
B (+ (p (+ X 1)) Y)
BA (+ (p B) Z)
BB (+ (p (+ B 1)) Z)
AAA (+ (p AA) W)
AAB (+ (p (+ AA 1)) W)
ABA (+ (p AB) W)
ABB (+ (p (+ AB 1)) W)
BAA (+ (p BA) W)
BAB (+ (p (+ BA 1)) W)
BBA (+ (p BB) W)
BBB (+ (p (+ BB 1)) W)]
(linear-erp s
(linear-erp t
(linear-erp v
(linear-erp u (grad4 (p AAA) xx yy zz ww) (grad4 (p BAA) (dec xx) yy zz ww))
(linear-erp u (grad4 (p ABA) xx (dec yy) zz ww) (grad4 (p BBA) (dec xx) (dec yy) zz ww)))
(linear-erp v
(linear-erp u (grad4 (p AAB) xx yy (dec zz) ww) (grad4 (p BAB) (dec xx) yy (dec zz) ww))
(linear-erp u (grad4 (p ABB) xx (dec yy) (dec zz) ww) (grad4 (p BBB) (dec xx) (dec yy) (dec zz) ww))))
(linear-erp t
(linear-erp v
(linear-erp u (grad4 (p (inc AAA)) xx yy zz (dec ww)) (grad4 (p (inc BAA)) (dec xx) yy zz (dec ww)))
(linear-erp u (grad4 (p (inc ABA)) xx (dec yy) zz (dec ww)) (grad4 (p (inc BBA)) (dec xx) (dec yy) zz (dec ww))))
(linear-erp v
(linear-erp u (grad4 (p (inc AAB)) xx yy (dec zz) (dec ww)) (grad4 (p (inc BAB)) (dec xx) yy (dec zz) (dec ww)))
(linear-erp u (grad4 (p (inc ABB)) xx (dec yy) (dec zz) (dec ww)) (grad4 (p (inc BBB)) (dec xx) (dec yy) (dec zz) (dec ww))))))))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment