Raster/Spiral v2

by Arjan Haverkamp

JavaScript

let dist = 1;
let w = 10, h = 30;
let x = w/2, y = h/2;
let raster = [[x,y]];
let step = 1;

let i = 0;

loop1:
do {
	let dir = 'rdlu'[i % 4];
  for (let j = 0; j < dist; j++) {
		switch(dir) {
     	case 'r': x += step; break;
      case 'l': x -= step; break;
      case 'u': y -= step; break;
      case 'd': y += step; break;
    }
    if (x >= 0 && y >= 0 && x < w && y < h) {
    	raster.push([x,y]);
    }
    
    let p1 = step + 1;
    if (!(x > -w*p1 && y > -h*p1 && x < w*p1 && y < h*p1)) {
    	break loop1;
    }
  }
  if (i % 2 == 1) { dist++; }
} while(++i);

console.log(raster);