grid_space 1.0.1 copy "grid_space: ^1.0.1" to clipboard
grid_space: ^1.0.1 copied to clipboard

Common classes to convert between square grids and hexagonal grids.

Common classes to create and convert between square grids and hexagonal grids.

In grid space, every cell has a size of 1 unit in width and height. Each grid can define a custom "world space". Conversion between the unit grid and a grid's world space is achieved using either gridToWorldSpace( point ) or worldToGridSpace( point ).

final grid = Grid.square(
    4,                // The grid area should span 4 tiles in each row
    zero: Point(0, 0) // Grid origin in world space
    size: Point(4, 4) // Grid size in world space

// Alternatives with hexagonal grid
Grid.hexagonal(4, horizontal: true);
Grid.hexagonal(4, horizontal: false);

// Examples: Snapping circles (center, diameter) to the Grid
final blue   = grid.gridSnapCentered( Point(0.5, 0.5), 1 );
final green  = grid.gridSnapCentered( Point(1,   2  ), 2 );
final pink   = grid.gridSnapCentered( Point(2.5, 1.5), 1 );
final orange = grid.gridSnapCentered( Point(1.5, 3.5), 1 );

// Convert to your custom world space
final worldPosition = grid.gridToWorldSpace(blue);

The following figure exemplifies how the grid space is laid out in each grid type, as well as how the center of a circle can be snapped to the nearest grid point. Figure showing how grid space and world space correlate in square grids and horizontal or vertical hex grids Transformations in a square grid, horizontal hex grid and vertical hex grid.

pub points



Common classes to convert between square grids and hexagonal grids.

Repository (GitHub)
View/report issues


API reference




Packages that depend on grid_space