nefd on 08/31/11

Bresenham's Line Algorithm

/ Published in: JavaScript

Code obtained from a stackoverflow question. This is a javascript implementation of the Bresenham line algorithm. Given two points, this function will return an array of coordinates which go from point A to point B, one step at a time.

`function calcStraightLine (startCoordinates, endCoordinates) {    var coordinatesArray = new Array();    // Translate coordinates    var x1 = startCoordinates.left;    var y1 = startCoordinates.top;    var x2 = endCoordinates.left;    var y2 = endCoordinates.top;    // Define differences and error check    var dx = Math.abs(x2 - x1);    var dy = Math.abs(y2 - y1);    var sx = (x1 < x2) ? 1 : -1;    var sy = (y1 < y2) ? 1 : -1;    var err = dx - dy;    // Set first coordinates    coordinatesArray.push(new Coordinates(y1, x1));    // Main loop    while (!((x1 == x2) && (y1 == y2))) {      var e2 = err << 1;      if (e2 > -dy) {        err -= dy;        x1 += sx;      }      if (e2 < dx) {        err += dx;        y1 += sy;      }      // Set coordinates      coordinatesArray.push(new Coordinates(y1, x1));    }    // Return the result    return coordinatesArray;  }`