도구스개발

육각 격자(헥사곤) 좌표 거리 계산기

오프셋(행/열)·축(axial)·큐브(cube) 세 좌표계 사이를 변환하고 두 칸 사이의 최단 이동 거리를 구합니다. 타일맵 게임 개발에서 자주 쓰는 정석 공식(Red Blob Games 헥사곤 가이드 기준)입니다.

칸 A (열, 행)

칸 B (열, 행)

최단 이동 거리

4칸

가장 가까운 이웃으로만 이동한다고 볼 때 필요한 최소 걸음 수입니다

좌표계칸 A칸 B
오프셋 (col, row)(0, 0)(3, 2)
축 (q, r)(0, 0)(2, 2)
큐브 (x, y, z)(0, 0, 0)(2, -4, 2)
검산 — 축 좌표를 다시 오프셋으로 되돌리면입력과 정확히 같습니다
큐브 좌표(x+y+z=0)로 바꾸면 거리 계산이 정사각 격자의 맨해튼 거리와 같은 모양이 됩니다. distance = (|Δx|+|Δy|+|Δz|)/2 = max(|Δx|,|Δy|,|Δz|)로, 두 식이 같은 이유는 Δx+Δy+Δz=0이라 세 절댓값 중 가장 큰 것이 나머지 둘의 합과 같기 때문입니다.
오프셋(열·행) 좌표만으로 거리를 구하면 틀립니다. 육각 격자는 한 줄씩 반 칸 어긋나 있어 “같은 열”이 실제로는 이웃이 아닐 수 있기 때문입니다. 그래서 항상 축이나 큐브 좌표로 바꿔 계산한 뒤, 화면에 보여줄 때만 오프셋으로 되돌립니다.
포인티톱(뾰족한 꼭짓점이 위)은 행이 반 칸씩 어긋나고(odd-r/even-r), 플랫톱(평평한 변이 위)은 열이 반 칸씩 어긋납니다(odd-q/even-q). 게임에서 타일이 어느 쪽으로 그려지는지에 맞춰 방식을 고르세요.

사용 방법

  1. 1타일이 그려지는 방식(포인티톱/플랫톱, 홀수·짝수 밀림)을 고릅니다.
  2. 2두 칸의 열·행 좌표를 넣습니다.
  3. 3축·큐브 좌표로 바뀐 값과 최단 이동 거리를 확인합니다.

자주 묻는 질문

오프셋(행·열) 좌표를 x+y+z=0을 만족하는 큐브 좌표로 바꾼 뒤, distance = (|Δx|+|Δy|+|Δz|)/2 공식을 씁니다. 이는 max(|Δx|,|Δy|,|Δz|)와 같은 값인데, Δx+Δy+Δz=0이라 세 절댓값 중 가장 큰 것이 나머지 둘의 합과 정확히 같기 때문입니다. 정사각 격자의 맨해튼 거리(|Δx|+|Δy|)와 같은 발상을 육각형에 맞게 확장한 것입니다.

육각 격자는 한 줄씩 반 칸씩 어긋나게 그려지기 때문입니다(포인티톱이면 행이, 플랫톱이면 열이 어긋납니다). 그래서 "같은 열"이라고 실제로 이웃인 것도 아니고 "열 차이"가 그대로 거리가 되지도 않습니다. 어긋남이 없는 축(axial)이나 큐브 좌표로 바꿔 계산해야 정확합니다.

같은 것을 다르게 표현한 것뿐입니다. 큐브 좌표는 세 축 x, y, z를 쓰되 항상 x+y+z=0이 되도록 잡아 거리 계산이 쉽고, 축 좌표는 z=−x−y이므로 z를 생략하고 q(=x), r(=z) 두 값만 저장합니다. 저장은 축 좌표로, 거리 계산은 큐브 좌표로 하는 것이 일반적입니다.

포인티톱은 육각형의 뾰족한 꼭짓점이 위를 향하는 배치로 이때는 «행»이 반 칸씩 어긋나고(odd-r은 홀수 행이, even-r은 짝수 행이 오른쪽으로 밀림), 플랫톱은 평평한 변이 위를 향하는 배치로 «열»이 반 칸씩 어긋납니다(odd-q/even-q). 어느 쪽이든 화면에 그리는 방식의 차이일 뿐 축·큐브 좌표로 바꾸면 계산 방법은 같습니다.

입력한 오프셋 좌표를 축 좌표로 바꾼 뒤 다시 오프셋으로 되돌려 원래 값과 같은지 확인합니다. 네 가지 격자 방식(odd-r, even-r, odd-q, even-q) 모두에서 이 왕복이 항상 정확히 들어맞아야 변환식에 오류가 없다고 볼 수 있습니다.

알아두면 좋은 점

  • Red Blob Games의 헥사곤 격자 가이드에 정리된 표준 변환식을 그대로 씁니다. 게임 엔진마다 축 이름(q,r vs col,row)이나 부호를 다르게 쓸 수 있으니 실제 코드에 옮길 때는 방향을 한 번 맞춰 보는 것이 좋습니다.
  • 거리는 "가장 가까운 이웃 칸으로만 이동한다"고 볼 때의 최소 걸음 수입니다. 장애물이 있는 실제 경로 찾기(A* 등)에는 이 값이 하한선(장애물이 없을 때의 최선)으로 쓰입니다.
  • 좌표는 ±9999 범위 안에서 다룹니다.

함께 보면 좋은 도구

마지막 검증: 2026년 9월 8일 · 결과는 참고용 추정치입니다.