Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Mapa Heksagonalna - współrzędne

Ostatnio zmodyfikowano 2024-02-23 19:26
Autor Wiadomość
tBane
Temat założony przez niniejszego użytkownika
Mapa Heksagonalna - współrzędne
» 2024-02-22 19:41:55
Aby konwertować współrzędne heksagonalne na globalne należy:

C/C++
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 ?
P-180861
tBane
Temat założony przez niniejszego użytkownika
» 2024-02-22 19:46:15
Konwersja współrzędnych globalnych na heksagonalne według ChatGPT ale nie działa dla współrzędnych x==3 oraz x==7.
https://youtu.be/6tOcyE3CHwE

C/C++
vector2i globalToHex( float x, float y )
{
   
vector2i hex;
   
hex.Y = y /( 1.5f * outerRadius );
   
hex.X =( x -( int( hex.Y ) % 2 ) * innerRadius ) /( 2.0f * innerRadius );
   
return hex;
}
P-180862
DejaVu
» 2024-02-22 22:24:05
Wypisz na ekran obliczenia jakie uzyskujesz z tego działania, abyć mógł to 'zdiagnozować'.
P-180864
tBane
Temat założony przez niniejszego użytkownika
» 2024-02-23 18:28:55
edit //
coś źle obliczało - już zapomniałem
P-180867
tBane
Temat założony przez niniejszego użytkownika
» 2024-02-23 18:38:18
Rozwiązanie

C/C++
vector2di globalToHex( float x, float y )
{
   
vector2di hex;
   
   
float xx =( x /( 2.0f * innerRadius ) ) -(( int( y /( 1.5f * outerRadius ) ) ) % 2 ) / 2.f;
   
float zz = y /( 1.5f * outerRadius );
   
   
hex.X =( xx + 0.5f );
   
hex.Y =( zz + 0.5f );
   
   
return hex;
}
P-180868
« 1 »
  Strona 1 z 1