12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- var pause = false;
- document.getElementById('pause').onclick = function(){
- pause = !pause;
- };
- var canvas = document.getElementById('canvas');
- var context = canvas.getContext('2d');
- function resize() {
- canvas.width = window.innerWidth;
- canvas.height = window.innerHeight;
- }
- window.addEventListener('resize', resize);
- resize();
- var dim = 128
- var sq = []
- for(var i = 0; i < dim*dim; i++) {
- if(i % dim < dim/2) {
- sq.push(0)
- } else {
- sq.push(240)
- }
- }
- var t0 = performance.now();
- function loop(t)
- {
- var dt = (t - t0) / 1000; // delta t, in seconds
- t0 = t;
- var fy = 0;
- var size = Math.min(canvas.height, canvas.width) / dim;
- let newArray = []; newArray.length = dim*dim
- if (!pause) {
- for(var i = 0; i < sq.length; i++) {
- newArray[i] = decideOutcome(i)
- context.fillStyle = 'hsl(' + newArray[i] + ', 90%, 60%)'
- context.fillRect((i % dim)*size, Math.floor(i/dim) * size, size, size);
- }
- sq = newArray;
- }
- window.requestAnimationFrame(loop);
- }
- function decideOutcome(i) {
- opts = []
- function op(b) {
- opts.push(b)
- }
- op(sq[i])
- if(i % dim == 0) {
- // first column
- op(sq[i+1]) // search right
- }
- else if(i % dim == dim-1) {
- //last column
- op(sq[i-1]) // search left
- }
- else {
- op(sq[i+1]) // search right
- op(sq[i-1]) // search left
- }
- if(i < dim) {
- // first row
- op(sq[i+dim]) // search down
- }
- else if(i >= sq.length - dim) {
- // last row
- op(sq[i-dim]) // search up
- }
- else {
- op(sq[i+dim]) // search down
- op(sq[i-dim]) // search up
- }
- end = opts[Math.floor(Math.random() * opts.length)]
- return (end - sq[i]) * 0.99 + sq[i];
- }
- window.requestAnimationFrame(loop);
|