adding dejong example and reduce

This commit is contained in:
Quentin Leonetti 2019-07-14 07:40:20 +02:00
parent cb1aff02e4
commit 530264742a
2 changed files with 26 additions and 17 deletions

View File

@ -70,6 +70,10 @@ function Library (ronin) {
return arr.filter(fn)
}
this.reduce = (fn, arr, acc = 0) => {
return arr.reduce(fn, acc)
}
this.first = (arr) => {
return arr[0]
}

View File

@ -1,22 +1,27 @@
(
(clear)
(def point (lambda (x y color) (stroke (circle x y 1) 1 color)))
(point 50 50 "red")
(point 50 150 "red")
(def dejong (lambda (i x y a b c d)
(if (gt i 0)
(
(point
(add 200 (mul 50 x))
(add 200 (mul 50 y))
"red")
(dejong
(sub i 1)
(add (sin (mul a y)) (mul x (cos (mul b x))))
(add (mul x (sin (mul x c))) (cos (mul d y)))
a b c d)
)
(echo "done"))
(def _dejong (lambda (x y a b c d)
(rest ((point
(add 200 (mul 50 x))
(add 200 (mul 50 y))
"red")
(add (sin (mul a y)) (mul x (cos (mul b x))))
(add (mul x (sin (mul x c))) (cos (mul d y)))
))
))
(dejong 800 40 40 1.4 -2.3 2.4 -2.1)
(def dejong (lambda (r a b c d)
(reduce
(lambda (acc val)
(first (
(_dejong (first acc) (last acc) a b c d)
)))
(range 0 r)
(2 1)
)
))
(dejong 4000 1.4 -2.3 2.4 -2.1)
)