/ Published in: JavaScript
Code obtained from a [stackoverflow question](http://stackoverflow.com/questions/4672279/bresenham-algorithm-in-javascript). This is a javascript implementation of the [Bresenham line algorithm](http://en.wikipedia.org/wiki/Bresenham's_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.
Expand |
Embed | Plain Text
Copy this code and paste it in your HTML
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; }
URL: http://stackoverflow.com/questions/4672279/bresenham-algorithm-in-javascript