This is a Go library used to handle regular hexagons.
It's based on the algorithms described by Amit Patel in his wonderful guide to hexagons -- I highly recommend reading through that page.
import "github.com/falanger/hexgrid"
hexagonA := hexgrid.NewHex(1, 2) //at axial coordinates Q=1 R=2
hexagonB := hexgrid.NewHex(2, 3) //at axial coordinates Q=2 R=3
distance := hexagonA.DistanceTo(hexagonB)
origin := hexgrid.NewHex(10,20)
destination := hexgrid.NewHex(30,40)
path := origin.LineDraw(destination)
origin := hexgrid.Point{X: 0, Y: 0} // The coordinate that corresponds to the center of hexagon 0,0
size := hexgrid.Point{X: 100, Y: 100} // The length of an hexagon side => 100
layout: = hexgrid.Layout{Origin: origin, Size: size, Orientation: hexagon.OrientationFlat}
hex := hexgrid.NewHex(1,0)
pixel := hexgrid.HexToPixel(layout,hex) // Pixel that corresponds to the center of hex 1,0 (in the given layout)
point := hexgrid.Point{X: 10, Y: 20}
hex := PixelToHex(layout, point).Round()
- 1.0.0: Combining multiple forks
- 0.1.0: First version
- Pedro Sousa, for the intial repo.
- Igor Shmulyan, Brendan Le Glaunec, Sergey Kolunov, Puzzlemaker1, and Patrick Fay for their forks.
- And of course Amit Patel of Red Blob Games, without which we wouldn't have any of this.
MIT