1.0.2 • Published 2 years ago

fresenham v1.0.2

Weekly downloads
-
License
ISC
Repository
github
Last release
2 years ago

typescript

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.