-
Notifications
You must be signed in to change notification settings - Fork 64
Description
Describe the bug
Offset is not applying to pointy hex when using grid distance method
To Reproduce
const WideHex = defineHex({
dimensions: { xRadius: 50, yRadius: 30 }, // wide hexes
offset: -1, // or 1
})
const distanceCalculator = new Grid(WideHex, rectangle({ width: 10, height: 10 }))
console.log(
Starting coordinates:${boardTile.x},${boardTile.y},
Destination coordinates:${qBoardCoordinate},${rBoardCoordinate},
Distance:${distanceCalculator.distance( [boardTile.x, boardTile.y], [qBoardCoordinate, rBoardCoordinate] )},
distanceCalculator.toJSON(),
)
// Case 1
Starting coordinates:3,1 Destination coordinates:4,2 Distance:2 {
hexSettings: {
dimensions: { xRadius: 50, yRadius: 30 },
orientation: 'POINTY',
origin: { x: 0, y: 0 },
offset: -1
},
coordinates: [
W { q: 0, r: 0 }, W { q: 1, r: 0 }, W { q: 2, r:
0 }, W { q: 3, r: 0 },
W { q: 4, r: 0 }, W { q: 5, r: 0 }, W { q: 6, r:
0 }, W { q: 7, r: 0 },
W { q: 8, r: 0 }, W { q: 9, r: 0 }, W { q: 0, r:
1 }, W { q: 1, r: 1 },
W { q: 2, r: 1 }, W { q: 3, r: 1 }, W { q: 4, r:
1 }, W { q: 5, r: 1 },
W { q: 6, r: 1 }, W { q: 7, r: 1 }, W { q: 8, r:
1 }, W { q: 9, r: 1 },
W { q: -1, r: 2 }, W { q: 0, r: 2 }, W { q: 1, r:
2 }, W { q: 2, r: 2 },
W { q: 3, r: 2 }, W { q: 4, r: 2 }, W { q: 5, r:
2 }, W { q: 6, r: 2 },
W { q: 7, r: 2 }, W { q: 8, r: 2 }, W { q: -1, r: 3 }, W { q: 0, r: 3 },
W { q: 1, r: 3 }, W { q: 2, r: 3 }, W { q: 3, r:
3 }, W { q: 4, r: 3 },
W { q: 5, r: 3 }, W { q: 6, r: 3 }, W { q: 7, r:
3 }, W { q: 8, r: 3 },
W { q: -2, r: 4 }, W { q: -1, r: 4 }, W { q: 0, r:
4 }, W { q: 1, r: 4 },
W { q: 2, r: 4 }, W { q: 3, r: 4 }, W { q: 4, r:
4 }, W { q: 5, r: 4 },
W { q: 6, r: 4 }, W { q: 7, r: 4 }, W { q: -2, r: 5 }, W { q: -1, r: 5 },
W { q: 0, r: 5 }, W { q: 1, r: 5 }, W { q: 2, r:
5 }, W { q: 3, r: 5 },
W { q: 4, r: 5 }, W { q: 5, r: 5 }, W { q: 6, r:
5 }, W { q: 7, r: 5 },
W { q: -3, r: 6 }, W { q: -2, r: 6 }, W { q: -1, r: 6 }, W { q: 0, r: 6 },
W { q: 1, r: 6 }, W { q: 2, r: 6 }, W { q: 3, r:
6 }, W { q: 4, r: 6 },
W { q: 5, r: 6 }, W { q: 6, r: 6 }, W { q: -3, r: 7 }, W { q: -2, r: 7 },
W { q: -1, r: 7 }, W { q: 0, r: 7 }, W { q: 1, r:
7 }, W { q: 2, r: 7 },
W { q: 3, r: 7 }, W { q: 4, r: 7 }, W { q: 5, r:
7 }, W { q: 6, r: 7 },
W { q: -4, r: 8 }, W { q: -3, r: 8 }, W { q: -2, r: 8 }, W { q: -1, r: 8 },
W { q: 0, r: 8 }, W { q: 1, r: 8 }, W { q: 2, r:
8 }, W { q: 3, r: 8 },
W { q: 4, r: 8 }, W { q: 5, r: 8 }, W { q: -4, r: 9 }, W { q: -3, r: 9 },
W { q: -2, r: 9 }, W { q: -1, r: 9 }, W { q: 0, r:
9 }, W { q: 1, r: 9 },
W { q: 2, r: 9 }, W { q: 3, r: 9 }, W { q: 4, r:
9 }, W { q: 5, r: 9 }
]
}
// Case 2
Starting coordinates:3,1 Destination coordinates:4,2 Distance:2 {
hexSettings: {
dimensions: { xRadius: 50, yRadius: 30 },
orientation: 'POINTY',
origin: { x: 0, y: 0 },
offset: 1
},
coordinates: [
W { q: 0, r: 0 }, W { q: 1, r: 0 }, W { q: 2, r:
0 }, W { q: 3, r: 0 },
W { q: 4, r: 0 }, W { q: 5, r: 0 }, W { q: 6, r:
0 }, W { q: 7, r: 0 },
W { q: 8, r: 0 }, W { q: 9, r: 0 }, W { q: -1, r: 1 }, W { q: 0, r: 1 },
W { q: 1, r: 1 }, W { q: 2, r: 1 }, W { q: 3, r:
1 }, W { q: 4, r: 1 },
W { q: 5, r: 1 }, W { q: 6, r: 1 }, W { q: 7, r:
1 }, W { q: 8, r: 1 },
W { q: -1, r: 2 }, W { q: 0, r: 2 }, W { q: 1, r:
2 }, W { q: 2, r: 2 },
W { q: 3, r: 2 }, W { q: 4, r: 2 }, W { q: 5, r:
2 }, W { q: 6, r: 2 },
W { q: 7, r: 2 }, W { q: 8, r: 2 }, W { q: -2, r: 3 }, W { q: -1, r: 3 },
W { q: 0, r: 3 }, W { q: 1, r: 3 }, W { q: 2, r:
3 }, W { q: 3, r: 3 },
W { q: 4, r: 3 }, W { q: 5, r: 3 }, W { q: 6, r:
3 }, W { q: 7, r: 3 },
W { q: -2, r: 4 }, W { q: -1, r: 4 }, W { q: 0, r:
4 }, W { q: 1, r: 4 },
W { q: 2, r: 4 }, W { q: 3, r: 4 }, W { q: 4, r:
4 }, W { q: 5, r: 4 },
W { q: 6, r: 4 }, W { q: 7, r: 4 }, W { q: -3, r: 5 }, W { q: -2, r: 5 },
W { q: -1, r: 5 }, W { q: 0, r: 5 }, W { q: 1, r:
5 }, W { q: 2, r: 5 },
W { q: 3, r: 5 }, W { q: 4, r: 5 }, W { q: 5, r:
5 }, W { q: 6, r: 5 },
W { q: -3, r: 6 }, W { q: -2, r: 6 }, W { q: -1, r: 6 }, W { q: 0, r: 6 },
W { q: 1, r: 6 }, W { q: 2, r: 6 }, W { q: 3, r:
6 }, W { q: 4, r: 6 },
W { q: 5, r: 6 }, W { q: 6, r: 6 }, W { q: -4, r: 7 }, W { q: -3, r: 7 },
W { q: -2, r: 7 }, W { q: -1, r: 7 }, W { q: 0, r:
7 }, W { q: 1, r: 7 },
W { q: 2, r: 7 }, W { q: 3, r: 7 }, W { q: 4, r:
7 }, W { q: 5, r: 7 },
W { q: -4, r: 8 }, W { q: -3, r: 8 }, W { q: -2, r: 8 }, W { q: -1, r: 8 },
W { q: 0, r: 8 }, W { q: 1, r: 8 }, W { q: 2, r:
8 }, W { q: 3, r: 8 },
W { q: 4, r: 8 }, W { q: 5, r: 8 }, W { q: -5, r: 9 }, W { q: -4, r: 9 },
W { q: -3, r: 9 }, W { q: -2, r: 9 }, W { q: -1, r: 9 }, W { q: 0, r: 9 },
W { q: 1, r: 9 }, W { q: 2, r: 9 }, W { q: 3, r:
9 }, W { q: 4, r: 9 }
]
}
Expected behavior
When changing offset one of them should calculate 1 and the other 2, as distance as seen in redblob blog.
Environment (please complete the following information):
- Honeycomb version [e.g. 4.1.4]
- node 18
Screenshots
Not apply
Additional context
Not for the moment