function midpoint([x0, y0], [x1, y1])
{
const pixel = (x,y) => [Math.round(x), Math.round(y)]
let [i0, j0] = pixel(x0,y0);
let [i1, j1] = pixel(x1,y1);
let [i,j] = [i0,j0];
let stepi = i1 > i0 ? 1 : i1 < i0? -1 : 0;
let stepj = j1 > j0 ? 1 : j1 < j0? -1 : 0;
let di = Math.abs(i1 - i0);
let dj = Math.abs(j1 - j0);
let steep = false;
if(dj > di)
{
steep = true;
[i,j] = [j,i];
[di,dj] = [dj,di];
[stepi,stepj] = [stepj,stepi];
}
let d = di - (2 * dj);
const pixels = [];
const push_pixel = (i,j,steep) => steep? pixels.push([j,i]) : pixels.push([i,j]);
push_pixel(i,j,steep);
for(let count = 1; count <= di; ++count)
{
if(d <= 0)
{
j += stepj;
d += 2 * di;
}
i += stepi;
d -= 2 * dj;
push_pixel(i,j,steep);
}
return pixels;
}