Package arc.math.geom

Class Bresenham2

java.lang.Object
arc.math.geom.Bresenham2

public class Bresenham2 extends Object
Returns a list of points at integer coordinates for a line on a 2D grid, using the Bresenham algorithm.

Instances of this class own the returned array of points and the points themselves to avoid garbage struct as much as possible. Calling any of the methods will result in the reuse of the previously returned array and vectors.

  • Constructor Details

    • Bresenham2

      public Bresenham2()
  • Method Details

    • line

      public static void line(int startX, int startY, int endX, int endY, Intc2 consumer)
      Iterates through a list of Point2 instances along the given line, at integer coordinates.
      Parameters:
      startX - the start x coordinate of the line
      startY - the start y coordinate of the line
      endX - the end x coordinate of the line
      endY - the end y coordinate of the line
    • line

      public Seq<Point2> line(Point2 start, Point2 end)
      Returns a list of Point2 instances along the given line, at integer coordinates.
      Parameters:
      start - the start of the line
      end - the end of the line
      Returns:
      the list of points on the line at integer coordinates
    • line

      public Seq<Point2> line(int startX, int startY, int endX, int endY)
      Returns a list of Point2 instances along the given line, at integer coordinates.
      Parameters:
      startX - the start x coordinate of the line
      startY - the start y coordinate of the line
      endX - the end x coordinate of the line
      endY - the end y coordinate of the line
      Returns:
      the list of points on the line at integer coordinates
    • line

      public Seq<Point2> line(int startX, int startY, int endX, int endY, Pool<Point2> pool, Seq<Point2> output)
      Returns a list of Point2 instances along the given line, at integer coordinates.
      Parameters:
      startX - the start x coordinate of the line
      startY - the start y coordinate of the line
      endX - the end x coordinate of the line
      endY - the end y coordinate of the line
      pool - the pool from which Point2 instances are fetched
      output - the output array, will be cleared in this method
      Returns:
      the list of points on the line at integer coordinates
    • lineNoDiagonal

      public Seq<Point2> lineNoDiagonal(int startX, int startY, int endX, int endY, Pool<Point2> pool, Seq<Point2> output)
      Returns a list of Point2 instances along the given line at integer coordinates, with no diagonals.
      Parameters:
      startX - the start x coordinate of the line
      startY - the start y coordinate of the line
      endX - the end x coordinate of the line
      endY - the end y coordinate of the line
      pool - the pool from which Point2 instances are fetched
      output - the output array, will be cleared in this method
      Returns:
      the list of points on the line at integer coordinates