This commit is contained in:
bart
2026-11-08 16:15:49 +01:00
parent 5af4581182
commit 1140dd562b
34 changed files with 940 additions and 44 deletions
+21
View File
@@ -41,6 +41,27 @@ inline QVector2D getHexEdgeMidpoint(int edge) {
return midpoints[(edge % 6 + 6) % 6];
}
// Returns the two corner endpoints in local tile coordinates for a given edge (radius = 0.5)
inline void getHexEdgeEndpoints(int edge, QVector2D &p1, QVector2D &p2) {
static const QVector2D corners[6] = {
QVector2D(-0.25f, 0.43301270f), // 0: Top-Left
QVector2D( 0.25f, 0.43301270f), // 1: Top-Right
QVector2D( 0.5f, 0.0f), // 2: Right
QVector2D( 0.25f, -0.43301270f), // 3: Bottom-Right
QVector2D(-0.25f, -0.43301270f), // 4: Bottom-Left
QVector2D(-0.5f, 0.0f) // 5: Left
};
switch ((edge % 6 + 6) % 6) {
case 0: p1 = corners[5]; p2 = corners[0]; break;
case 1: p1 = corners[0]; p2 = corners[1]; break;
case 2: p1 = corners[1]; p2 = corners[2]; break;
case 3: p1 = corners[2]; p2 = corners[3]; break;
case 4: p1 = corners[3]; p2 = corners[4]; break;
case 5: p1 = corners[4]; p2 = corners[5]; break;
default: p1 = corners[0]; p2 = corners[1]; break;
}
}
// Returns the coordinates of the neighbor tile sharing the given edge
inline void getHexNeighbor(int x, int y, int edge, int &nx, int &ny) {
bool even = (x % 2 == 0);