Współrzędne Heksagonalne (mapa)

0

Aby konwertować współrzędne heksagonalne na globalne należy:

float outerRadius = 10.0f;
float innerRadius = outerRadius * 0.866025404f;

vector2f hexToGlobal(float x, float z)
{
	vector2f pos;
	pos.X = x * 2.0f * innerRadius + (int(z) % 2) * innerRadius;
	pos.Y = y * 1.5f * outerRadius;
	return  pos;
}

W jaki sposób dokonać odwrotnych obliczeń - to znaczy jak konwertować współrzędne globalne na heksagonalne ?

8

https://www.redblobgames.com/grids/hexagons/#hex-to-pixel — tutaj masz całkiem niezły opis. Ten artykuł to w ogóle giga-chad w temacie mapy zbudowanej z sześciokątów.

4

Rozwiązanie

vector2di globalToHex(float x, float y)
{
	vector2di hex;
	
	float xx = (x / (2.0f * innerRadius)) - ((int(y / (1.5f * outerRadius))) % 2)/2.f;
	float yy = y / (1.5f * outerRadius);

	hex.X = (xx + 0.5f);
	hex.Y = (yy + 0.5f);

	return hex;
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1