아래와 같은 다각형이 있다고 합시다. 이 다각형의 넓이를 구하는 방법은 여러가지가 있을 것입니다. 삼각형 여러개로 나눠서 구할 수도 있고, 정사각형의 넓이에서 나머지 부분을 빼서 구할 수도 있습니다. 그 외에도 방법이 더 있을 겁니다.
오늘 소개할 방법은 어떤 다각형이던 상관없이 통하는 방법입니다. 간단한 예제로 방법을 배워봅시다.
아래 다각형의 넓이를 구하고 싶은 상황입니다.

먼저 아래 사각형의 넓이를 구합니다. S1이라고 놓겠습니다.

다음은 아래 사각형의 넓이를 구합니다. S2이라고 놓겠습니다.

다음은 아래 사각형의 넓이를 구합니다. S3이라고 놓겠습니다.

다음은 아래 사각형의 넓이를 구합니다. S4라고 놓겠습니다.

모아보면 아래와 같습니다.

다각형의 넓이는 아래와 같이 구할 수 있습니다.
S1+S2−S3−S4
P1의 x좌표를 P1[x], y좌표를 P1[y]라고 놓고 이 규칙을 적용하면 도형의 넓이를 아래와 같이 표현할 수도 있습니다.
S1=12(P2[x]+P1[x])(P2[y]−P1[y])
S2=12(P3[x]+P2[x])(P3[y]−P2[y])
−S3=12(P4[x]+P3[x])(P4[y]−P3[y])
−S4=12(P1[x]+P4[x])(P1[y]−P4[y])
우리가 구하려는 넓이를 A라고 두고, 시그마 기호로 나타내면 아래와 같습니다.
A=S1+S2−S3−S4=[∑3i=112(Pi+1[x]+Pi[x])(Pi+1[y]−Pi[y])]+12(P1[x]+P4[x])(P1[y]−P4[y])
점의 개수가 많아져도 아래와 같이 일반화 시킬 수 있습니다. 점의 개수를 n이라고 놓겠습니다.
A=[∑n−1i=112(Pi+1[x]+Pi[x])(Pi+1[y]−Pi[y])]+12(P1[x]+Pn[x])(P1[y]−Pn[y])
위 식을 이용하여 다각형의 넓이를 구할 수 있습니다. 단, 점들이 P1 부터 반시계방향으로 순서대로 나열되어 있어야 합니다. 만약 점들이 P1부터 시계방향으로 나열되어 있다면 아래와 같이 수식이 바뀝니다.
A=[∑n−1i=112(Pi+1[x]+Pi[x])(−Pi+1[y]+Pi[y])]+12(P1[x]+Pn[x])(−P1[y]+Pn[y])
점이 많아지면 손으로 구하는게 어려운데요. 위 식은 코딩에서 강력한 힘을 발휘합니다. R로 코딩해보면 아래와 같습니다.
eostat_polygon = function(x, y, clockwise = FALSE) {
A = 0
if (clockwise == FALSE) {
for (i in c(1:(length(x) - 1))) {
A = A + (x[i + 1] + x[i]) * ( y[i + 1]-y[i]) * 0.5
}
A = A + (x[length(x)] + x[1]) * (y[1]-y[length(x)] ) * 0.5
} else if (clockwise == TRUE) {
for (i in c(1:(length(x) - 1))) {
A = A + (x[i + 1] + x[i]) * ( -y[i + 1]+y[i]) * 0.5
}
A = A + (x[length(x)] + x[1]) * (y[length(x)] -y[1]) * 0.5
}
return(A)
}
x와 y에 점을 순서대로 입력하고 시계방향인지 반시계방향인지 입력하면 다각형 넓이를 구해주는 함수입니다.
정의한 함수를 이용하여 위 예시의 다각형 넓이를 구하면 아래와 같습니다.
> x = c(1, 4, 4, 2)
> y = c(1, 2, 6, 3)
> eostat_polygon(x, y)
[1] 6.5
'etc > 어려운 수학이야기' 카테고리의 다른 글
고윳값과 고유벡터 쉽게 이해하기 (0) | 2023.08.09 |
---|---|
행렬형태의 연립방정식을 이해하는 세가지 관점 (0) | 2023.08.08 |
[좌표 변환] 글로벌 좌표를 로컬좌표로, 또는 그 반대 (0) | 2023.05.29 |
[벡터의 회전과 행렬] (1) 2차원 평면 (0) | 2023.05.24 |
미분과 극한 제대로 이해하기 (3) 극한을 엄밀하게 정의한 입실론-델타 (0) | 2023.01.30 |
미분과 극한 제대로 이해하기 (2) 극한의 등장 (0) | 2023.01.30 |
미분과 극한 제대로 이해하기 (1) 미분의 모순 (0) | 2023.01.26 |
댓글