처리중입니다. 잠시만 기다려주세요.
TTJ 코딩클래스
정규반 단과 자료실 테크 뉴스 코딩 퀴즈
테크 뉴스
Hacker News 2026.06.11 40

지도 위 점들로 영역을 나누는 마법 — 보로노이 다이어그램으로 세계 수도 지도 그리기

Hacker News 원문 보기
지도 위 점들로 영역을 나누는 마법 — 보로노이 다이어그램으로 세계 수도 지도 그리기

점만 찍었는데 영역이 나뉜다고요?

재밌는 인터랙티브 지도 하나를 소개할게요. 전 세계 수도들의 위치를 점으로 찍어놓고, "지구상의 어느 지점에서든 가장 가까운 수도는 어디일까?"를 색깔로 칠해서 보여주는 지도예요. 마우스로 빙글빙글 돌려볼 수 있고, 점 하나를 옮기면 영역 경계가 실시간으로 출렁이며 바뀌어요. 단순해 보이는데 묘하게 계속 만지게 되는 그런 작품이죠.

이 지도의 핵심에 보로노이 다이어그램(Voronoi diagram)이라는 개념이 들어 있어요. 이름은 어렵게 생겼지만 아이디어는 진짜 직관적이라, 한 번 알아두면 "어, 이거 여기저기 다 쓰이네?" 하게 되는 도구거든요. 오늘 이 글 하나로 제대로 감을 잡아볼게요.

보로노이가 뭐냐면요

동네에 편의점이 여러 개 있다고 생각해봐요. 여러분이 어디에 서 있든 "가장 가까운 편의점"이 하나 정해지겠죠? 이때 "이 구역 안에서는 A 편의점이 제일 가깝고, 저 구역에서는 B가 제일 가깝다"라고 땅을 구역별로 쫙 나눠놓은 그림이 바로 보로노이 다이어그램이에요.

각 점(편의점, 수도 등)을 사이트(site)라고 부르고, 그 점이 "내 구역"으로 차지하는 영역을 셀(cell)이라고 해요. 두 점 사이의 경계선은 정확히 두 점에서 같은 거리에 있는 지점들, 즉 수직 이등분선이 돼요. 중학교 때 배운 "두 점에서 같은 거리에 있는 점들의 집합" 기억나죠? 그게 바로 이 경계예요. 점이 수백 개여도 원리는 똑같아요. 모든 점 쌍에 대해 경계를 그어주면 벌집처럼 생긴 영역 분할이 완성되는 거죠.

이번 지도에서 특별한 점은, 평평한 종이가 아니라 구(球), 즉 둥근 지구 위에서 이 계산을 한다는 거예요. 지구는 둥그니까 두 도시 사이의 '직선거리'도 평면에서처럼 단순하지 않고, 구면 위의 곡선(대권 거리)으로 따져야 하거든요. 그걸 매끄럽게 계산해서 보여주는 게 기술적으로 꽤 깔끔한 구현이에요.

이게 왜 중요하냐면

보로노이는 그냥 예쁜 그림이 아니라 실무에서 엄청 많이 쓰이는 알고리즘이에요. 몇 가지만 볼게요.

  • 가장 가까운 시설 찾기: "내 위치에서 가장 가까운 병원/주유소/배달 가능 매장"을 구할 때, 미리 보로노이로 영역을 나눠두면 빠르게 답할 수 있어요. 배달 앱이나 지도 서비스의 단골 기법이죠.
  • 통신/네트워크: 휴대폰이 "가장 가까운 기지국"에 붙는 영역을 나눌 때 쓰여요.
  • 게임·그래픽: 자연스러운 지형이나 균열, 세포 무늬 같은 텍스처를 절차적으로 만들 때 보로노이 노이즈를 활용해요.
  • 데이터 분석: 최근접 이웃(nearest neighbor) 기반 분류나 공간 보간에도 바탕이 되고요.
계산 기하학에서는 이걸 빠르게 만드는 포춘 알고리즘(Fortune's algorithm)이 유명한데, n개의 점을 O(n log n)에 처리해요. 그리고 보로노이의 '쌍둥이' 격인 들로네 삼각분할(Delaunay triangulation)도 같이 따라와요. 둘은 서로 뒤집으면 나오는 관계라서, 하나를 구하면 다른 하나가 거의 공짜로 나오거든요. 이 들로네 삼각분할은 3D 지형 메시 생성이나 유한요소해석 같은 데서 또 핵심으로 쓰여요.

한국 개발자에게

참고로 이 지도를 만든 제이슨 데이비스(Jason Davies)는 데이터 시각화 라이브러리 D3.js 생태계에서 유명한 분이에요. 웹에서 인터랙티브 차트나 지도를 만든다면 D3는 한 번쯤 만나게 되는데, 이런 보로노이/지도 투영 관련 기능 상당수가 그분 손을 거쳤어요.

실무에서도 바로 쓸모가 있어요. 예를 들어 "전국 매장 중 사용자에게 가장 가까운 곳 보여주기", "권역별 담당 영업소 자동 배정", "배달 가능 구역 시각화" 같은 요구사항이 들어오면 보로노이가 정답일 때가 많아요. JavaScript라면 d3-delaunay, 파이썬이라면 scipy.spatial.Voronoi 한 줄이면 바로 계산되니, 직접 구현 안 해도 돼요. 개념만 알고 있으면 "아 이건 보로노이로 풀면 되겠다"는 판단을 내릴 수 있는 게 핵심이죠.

마무리

점 몇 개 찍었을 뿐인데 세상이 구역별로 쫙 나뉘는 보로노이 다이어그램. 단순한 수학 개념 하나가 지도, 게임, 통신, 데이터 분석까지 광범위하게 쓰인다는 게 참 매력적이에요. 직접 지도를 만져보면서 점을 옮겨보면 감이 확 와요.

여러분 프로젝트에서 "가장 가까운 무언가"를 찾아야 했던 적 있나요? 그때 어떻게 풀었는지, 보로노이를 썼다면 경험을 공유해주세요!


🔗 출처: Hacker News

이 뉴스가 유용했나요?

이 기술을 직접 배워보세요

파이썬으로 자동화를 시작해보세요

파이썬 기초부터 자동화까지 실전 강의.

파이썬 강의 보기

"비전공 직장인인데 반년 만에 수익 파이프라인을 여러 개 만들었습니다"

실제 수강생 후기
  • 비전공자도 6개월이면 첫 수익
  • 20년 경력 개발자 직강
  • 자동화 프로그램 + 소스코드 제공

매일 AI·개발 뉴스를 받아보세요

주요 테크 뉴스를 매일 아침 이메일로 전해드립니다.

스팸 없이, 언제든 구독 취소 가능합니다.