Переписав ваш предоставленный псевдокод в JavaScript:
function line(x0, y0, x1, y1) {
var dx = Math.abs(x1 - x0);
var dy = Math.abs(y1 - y0);
var sx = (x0 < x1) ? 1 : -1;
var sy = (y0 < y1) ? 1 : -1;
var err = dx - dy;
while(true) {
setPixel(x0, y0); // Do what you need to for this
if ((x0 === x1) && (y0 === y1)) break;
var e2 = 2*err;
if (e2 > -dy) { err -= dy; x0 += sx; }
if (e2 < dx) { err += dx; y0 += sy; }
}
}
Обратите внимание, что прямое сравнение с плавающей точкой может завершиться неудачей при выполнении шага (хотя это не должно происходить при переходе на целые числа, это может произойти, если любая конечная точкане целое число), поэтому вместо непосредственного сравнения конечных точек вы можете использовать эпсилон:
if (Math.abs(x0 - x1) < 0.0001 && Math.abs(y0 - y1) < 0.0001) break;
Однако это обязательно замедлит вас, поэтому делайте это только в том случае, если вы имеете дело сцелые числа.