lambdaway
::
fuzzy_circle
3
|
list
|
login
|
load
|
|
_h1 fuzzy circle _ul [[http://rosettacode.org/wiki/Constrained_random_points_on_a_circle|http://rosettacode.org/wiki/Constrained_random_points_on_a_circle]] _p The task is to plot thousand randomized dots between two circles directly in the wiki page, out of any canvas or svg contexts. {pre '{def circ {lambda {:cx :cy :r :back} {div {@ style="position:absolute; top: {- :cy :r}px; left: {- :cx :r}px; width: {* 2 :r}px; height: {* 2 :r}px; background: :back; border-radius: :rpx;"}} }} -> {def circ {lambda {:cx :cy :r :back} {div {@ style="position:absolute; top: {- :cy :r}px; left: {- :cx :r}px; width: {* 2 :r}px; height: {* 2 :r}px; background: :back; border-radius: :rpx;"}} }} '{def fuzzy_circle {lambda {:cx :cy :rmin :rmax :n} {circ :cx :cy :rmax #eee} {circ :cx :cy :rmin #fff} {S.map {{lambda {:cx :cy :rmin :rmax :i} {let { {:cx :cx} {:cy :cy} {:rmin :rmin} {:rmax :rmax} {:x {- {round {* {random} {* 2 :rmax}}} :rmax}} {:y {- {round {* {random} {* 2 :rmax}}} :rmax}} } {let { {:x {+ :cx :x }} {:y {+ :cy :y }} {:rr {+ {* :x :x} {* :y :y}}} {:r2min {* :rmin :rmin}} {:r2max {* :rmax :rmax}} } {if {or {< :rr :r2min} {> :rr :r2max}} then else {circ :x :y 2 #f00}} }}} :cx :cy :rmin :rmax} {S.serie 1 :n}} }} -> {def fuzzy_circle {lambda {:cx :cy :rmin :rmax :n} {circ :cx :cy :rmax #eee} {circ :cx :cy :rmin #fff} {S.map {{lambda {:cx :cy :rmin :rmax :i} {let { {:cx :cx} {:cy :cy} {:rmin :rmin} {:rmax :rmax} {:x {- {round {* {random} {* 2 :rmax}}} :rmax}} {:y {- {round {* {random} {* 2 :rmax}}} :rmax}} } {let { {:rr {+ {* :x :x} {* :y :y}}} {:x {+ :cx :x }} {:y {+ :cy :y }} {:r2min {* :rmin :rmin}} {:r2max {* :rmax :rmax}} } {if {or {< :rr :r2min} {> :rr :r2max}} then else {circ :x :y 2 #f00}} }}} :cx :cy :rmin :rmax} {S.serie 1 :n}} }} '{fuzzy_circle 0 580 80 120 1000} } {fuzzy_circle 0 580 80 120 1000}
lambdaway v.20211111