Skip to content
forked from pmcxs/hexgrid

Golang library to manage hexagon grids

License

Notifications You must be signed in to change notification settings

falanger/hexgrid

 
 

Repository files navigation

Hexgrid

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.

Usage

Importing

import "github.com/falanger/hexgrid"

Examples

Creating hexagons

hexagonA := hexgrid.NewHex(1, 2) //at axial coordinates Q=1 R=2
hexagonB := hexgrid.NewHex(2, 3) //at axial coordinates Q=2 R=3

Measuring the distance (in hexagons) between one hexagon and another

distance := hexagonA.DistanceTo(hexagonB)

Getting the array of hexagons on the path between one hexagon and another

origin := hexgrid.NewHex(10,20)
destination := hexgrid.NewHex(30,40)
path := origin.LineDraw(destination) 

Creating a layout

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}

Obtaining the pixel that corresponds to a given hexagon

hex := hexgrid.NewHex(1,0)             
pixel := hexgrid.HexToPixel(layout,hex)  // Pixel that corresponds to the center of hex 1,0 (in the given layout)

Obtaining the hexagon that contains the given pixel (and rounding it)

point := hexgrid.Point{X: 10, Y: 20}
hex := PixelToHex(layout, point).Round()

History

  • 1.0.0: Combining multiple forks
  • 0.1.0: First version

Credits

License

MIT

About

Golang library to manage hexagon grids

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Go 100.0%