그냥 하는 노트와 메모장

기하[3] - 다각형 넓이(신발끈 공식, Shoelace formula) 본문

Algorithms

기하[3] - 다각형 넓이(신발끈 공식, Shoelace formula)

coloredrabbit 2021. 5. 4. 18:29

[넓이]

  가장 쉬운 삼각형부터 확인해보자.

  아래처럼 2차원 좌표계에서 세 점이 삼각형을 이루고 있다고 하자. 우리가 원하는 영역은 D 영역이고 이 영역은 이 삼각형을 포함하고 x축과 y축에 평행하는 가장 작은 직사각형 R에서 A, B, C 영역을 빼면 된다. 삼각형을 감싸는 직사각형 R 특성상 반드시 하나 이상의 꼭지점을 공유한다.

 

삼각형과 영역

좌표에 따라

R = (x3-x2)*(y1-y2)
A = (x1-x2)*(y1-y2)/2
B = (x3-x1)*(y1-y3)/2
C = (x3-x2)*(y3-y2)/2
D = R - A - B - C
  = (x1y1+x2y3+x3y1-x2y1-x3y2-x1y3)/2

[신발끈 공식]

  신발끈 공식은 아래처럼 정의된다.

신발끈 공식

  위 그림처럼 모든 좌표를 세로로 나열하고, 한칸씩 x에서 오른쪽 아래로 가는 대각선을 이어서 다음 좌표의 y와 곱할 때는 양수로, y에서 왼쪽 아래로 가는 대각선을 이어서 다음 좌표의 x와 곱할 때는 음수로 계산하여 마지막에 2로 나눠주면 해당 삼각형의 영역의 넓이가 나온다.

  D = (x1y1+x2y3+x3y1-x2y1-x3y2-x1y3)/2

 

[일반식]

  다각형의 꼭지점을 좌표들이 아래와 같다면,

p1=(x1, y1)
p2=(x2, y2)
p3=(x3, y3)
...
pn=(xn, yn)

  신발끈 공식은 아래처럼 정의됩니다.

다각형의 넓이 = | x1*y2+x2*y3+...+xn*y1 - y1*x2 - y2*x3 - ... - yn * x1 | / 2

 

[신발끈 공식 한계]

  1. 주어지는 좌표들은 다각형의 시계 또는 반시계 방향으로 차례대로 주어져야한다.

  좌표공간에서 주어진 좌표들을 정리하여 증명된 공식이기 때문에 주어지는 좌표는 다각형의 시계 또는 반시계 방향으로 차례대로 주어져야 한다. 시계방향으로 주어진다면 신발끈 공식이 도출하는 값은 음수가 되고, 반시계라면 양수가 된다. 따라서 일반적으로 절대값을 씌워서 음수가 나오지 않게 한다.

 

  2. 주어준 좌표들이 중간에 접촉하거나 이루는 선분들이 교차하면 안된다.

  신발끈 공식은 단순 다각형에 대해서만 유효하다. 따라서 아래와 같은 다각형의 넓이는 구할 수 없다.

 

신발끈 공식으론 구할 수 없는 다각형들

 

 

[참고]

https://myengineeringworld.net/2014/06/shoelace-polygon-area-excel.html#t-1621078079560

https://en.wikipedia.org/wiki/Shoelace_formula

 

Comments