fresenham
v1.0.2
Published
Bresenham line drawing algorithm variation with a step parameter for floats compatibility
Downloads
1
Maintainers
Readme
Fresenham
This Node.js library (support TypeScript) will calculate a variation of Bresenham's line algorithm for 2 points that can have float values for x and y. You have to pass the extra step
(pixel width) parameter in this case. You can also set the step to a large integer like 25 to accommodate to a specific width of axes.
npm install fresenham
This module covers all the possible scenarios of a line
- Vertical lines
- Horizontal lines
- Dioganal lines
- Lines where 1 > slope > 0
- Lines with slope > 1
- Lines with slope < 0
Usage
Method require 5 float (startX, startY, endX, endY, step)
as parameters. It returns an array of objects {x, y}
. If you ommit the step parameter, it will be setted to the default value of 1
.
To get the coordinates of line from (0, 5.5) to (-1, 6) with a step of 1 use below code
import { drawLine } from "fresenham";
const linePoints = drawLine(0, 5.5, -1, 6, 0.25);
// OR
const fresenham = require("fresenham");
const linePoints = fresenham.drawLine(0, 5.5, -1, 6, 0.25);
The above code snippet returns array of objects as below
[
{ x: 0, y: 5.5 },
{ x: -0.25, y: 5.5 },
{ x: -0.5, y: 5.75 },
{ x: -0.75, y: 6 },
{ x: -1, y: 6 },
];
You can access each point using below code
linePoints.forEach((point) => {
const { x, y } = point;
//...
});
Testing
To run test, clone the repository and in project do the following commands
npm install
npm test
References
This bresenham variation was inspired by (copied from) the excellent work from Steve Johns.