주요 내용
코스: Pixar in a Box > 단원 8
단원 2: 무작위함을 사용하여 색칠하기보너스 응용 문제
해당 글은 보로노이 다이어그램의 테두리 선분이 어떻게 계산되는지 단계별로 알려줍니다.
보로노이 파티션의 기하학
보로노이 파티션은 화면 속에 분산되어 있는 위치들을 가지고 위치들의 경계를 그려 각 경계가 양쪽에 있는 위치의 정확히 반이 되도록 하는 것입니다.
두 위치 나누기
두 위치 와 로 시작합니다. 둘을 나누는 선에 있는 모든 점은 나 에서의 거리가 모두 동일합니다. 이 선이 가지고 있는 다른 특성에는 무엇이 있을까요?
먼저 할 수 있는 것은 에서 까지 선을 그리는 것입니다. 경계의 모든 점에서 의 거리와 의 거리가 같으니 경계는 의 중점 을 지날 것입니다.
중점에 대해서는 여기서 더 배울 수 있습니다.
이제 경계에서 다른 점 를 골라 삼각형 두 개를 만들어 봅시다: ,
점 는 경계에 있기 때문에 라는 것을 알고 있습니다.
또한 이라는 것과 두 삼각형 모두 를 변으로 삼는다는 것도 압니다.
또한
두 삼각형 모두 세 변의 길이를 공유하기 때문에 두 삼각형은 닮은 삼각형입니다. 닮은 삼각형에 대해서는 여기서 더 배울 수 있습니다.
세 위치 나누기
두 위치 간의 경계는 두 위치를 잇는 선분의 수직이등분선이라는 것을 배웠습니다. 어떻게 이 정보를 이용해 세 위치의 보로노이 파티션을 구할 수 있을까요? 먼저 위치 사이에 선을 그려봅시다.
다음으로 모서리들의 중점을 찾아 각 모서리마다 수직이등분선을 그립니다.
세 수직이등분선이 점 에서 만난다는 것을 볼 수 있습니다. 각 수직이등분선은 두 위치로부터 같은 거리에 있고 는 세 개 모두 위에 있기 때문에 는 모든 세 위치와 같은 거리에 있어야 합니다. 따라서 는 이 보로노이 파티션의 꼭짓점입니다. 이 꼭짓점에서 시작해 각 중점을 지나는 것으로 마지막 경계를 그릴 수 있습니다.
문제
에 대해 점 는 무엇이라고 부르나요?- 어떤 경우에 수직이등분선이 서로를 교차하지 않나요?
보로노이 파티션의 대수학
이제 간단한 보로노이 파티션에 필요한 기하학을 살펴보았으니 보로노이 파티션의 꼭짓점 좌표를 계산해 봅시다.
세 위치 , , 의 좌표는 다음과 같습니다:
먼저 의 수직이등분선 방정식을 계산해 봅시다. 이 선은 의 중점을 통과하며 의 경사도의 역수이고 부호가 반대인 경사도를 가집니다.
여기서 수직선의 방정식을 계산하는 법을 배워보세요.
이제 의 수직이등분선에 대한 방정식이 있으니 같은 방식을 이용해 의 수직이등분선도 구할 수 있습니다.
이제 수직이등분선 두 개에 대한 방정식이 있으니 둘이 어디서 교차할지 알 수 있습니다. 과 을 사용해 경사도를 나타내고 절편을 사용해 첫 수직이등분선을 나타내고, , 를 이용해 경사도를 나타내고 절편을 사용해 두 번째 수직이등분선을 나타내면 다음과 같습니다:
따라서:
방정식의 경사도와 절편에 값을 대입하면 교차점의 좌표를 찾을 수 있습니다. 그리고 수직이등분선 방정식 하나에 를 대입하면 좌표를 구할 수 있습니다.
이제 이런 계산을 몇 백번 하는 것을 상상해 보세요. 이것이 컴퓨터를 사용하는 이유입니다!