REBOL [ title: "Sierpinsky formula" author: cyphre@rebol.com Type: 'graphic Purpose: "Cool Sierpinsky visualization" ] time: func [b /local start] [ start: now/precise do b print ["Time:" difference now/precise start] ] img-size: 512x384 isx: img-size/x img: make image! img-size view/new layout [origin 0 ii: image img] sierpinsky: rebcode [/local x y n t px py idx1 idx2 cr cg cb r s][ set x 120 set y 56 set n 255 set t 0 set u 0 repeatz r 255 [ set.i t n sub.i t r repeatz s t [ set.i u r and u s set.i px x add.i px r add.i px 5 set.i py y add.i py s add.i py 5 set.i idx1 py mul.i idx1 isx add.i idx1 px set.i px n sub.i px r add.i px 6 add.i px x set.i py n sub.i py s add.i py 6 add.i py y set.i idx2 py mul.i idx2 isx add.i idx2 px neq.i u 0 either [ set.i cr r div.i cr 4 add.i cr 64 lsl cr 16 set.i cg s div.i cg 4 lsl cg 8 set.i cb s div.i cb 2 add.i cb 64 or cr cg or cr cb poke img idx1 cr set.i cr s div.i cr 4 lsl cr 16 set.i cg r div.i cg 4 add.i cg 64 lsl cg 8 set.i cb s div.i cb 2 add.i cb 64 or cr cg or cr cb poke img idx2 cr ][ set.i cr r div.i cr 2 add.i cr 128 lsl cr 16 set.i cg s div.i cg 2 lsl cg 8 set.i cb s add.i cb 128 or cr cg or cr cb poke img idx1 cr set.i cr s div.i cr 2 lsl cr 16 set.i cg r div.i cg 2 add.i cg 128 lsl cg 8 set.i cb s add.i cb 128 or cr cg or cr cb poke img idx2 cr ] ] ; apply res show [ii] ; apply res wait [0] ] ] time [sierpinsky] show ii wait [] ;halt