단순 다각형(simple polygon)의 무게중심(center of gravity or center of mass)은 다각형을 균일한 밀도의 판으로 생각했을 때 판의 무게중심과 같다. 가장 단순한 다각형인 삼각형의 무게중심은 세 꼭짓점의 산술평균으로 표현된다.
증명: 삼각형의 한 변 PQ에 나란한 띠로 삼각형을 분할하자. 그러면 각 띠의 무게중심은 띠의 기하학적 중심이므로 꼭짓점 R와 변 PQ의 중심을 연결한 선분 RA상에 있어야 한다. 그리고 띠의 무게중심은 그 점에 모든 질량이 뭉친 것으로 생각할 수 있으므로 전체 삼각형의 무게중심은 선분 RA상의 어느 지점에 있어야 한다. 마찬가지 논리로 삼각형을 선분 QR에 나란한 띠로 분할하면 띠들의 무게중심은 선분 PB상에 있음을 알 수 있다. 따라서 삼각형의 무게중심도 PB상의 한 점이어야 하므로 선분 PB와 선분 RA의 교점이 무게중심이 된다. 그러면 삼각형 PRG와 ABG는 닮은꼴이고, AB가 PR의 절반이므로 무게중심은 AR과 PB를 2:1로 내분한다는 사실은 쉽게 알 수 있다.

다각형은 삼각형으로 분할되므로 이 분할된 삼각형의 무게중심을 이용하면 쉽게 계산할 수 있다. 분할된 삼각형의 무게중심을 면적으로 가중치를 준 평균값이 다각형의 무게중심이 된다.
실제 계산에서는 다각형을 삼각 분할하지 않고도 간단한 방법에 의해서 무게중심을 구할 수 있다. 원점과 다각형의 각 변의 꼭짓점을 이용해서 삼각형들을 구성하면 원래의 다각형을 겹치게(원점이 내부에 있으면 겹침이 없다) 분할할 수 있다. 분할된 삼각형으로 무게중심을 구할 때 겹치는 영역의 기여를 제거해야 한다. 그런데 다각형 밖의 영역을 분할하는 삼각형은 다각형 내부를 분할하는 삼각형과는 다른 orientation을 가지게 된다. 삼각형의 면적은 한 꼭짓점을 공유하는 두 변의 외적에 비례하므로, 반대의 orientation을 갖는 삼각형은 자동으로 반대 부호의 면적을 가지게 된다. 따라서 분할된 삼각형 면적 가중치를 외적으로 주어서 무게중심을 구하면 겹치는 영역이 자동으로 상쇄되는 효과를 얻을 수 있다.

다각형의 면적(
CfPt polygon_centroid(const std::vector<CfPt>& V) {
double cx = 0, cy = 0, area2 = 0;
for (int i = 0, j = V.size() - 1; i < V.size(); j = i++) {
double tri_area2 = V[i].x * V[j].y - V[i].y * V[j].x; // area * 2;
cx += (V[i].x + V[j].x) * tri_area2;
cy += (V[i].y + V[j].y) * tri_area2;
area2 += tri_area2; //total area * 2
}
cx /= 3 * area2;
cy /= 3 * area2;
return CfPt(cx, cy);
};
'Computational Geometry' 카테고리의 다른 글
Creating Simple Polygons (0) | 2021.01.25 |
---|---|
단순 다각형의 Convex Hull(convex hull of a simple polygon) (0) | 2021.01.24 |
단순 다각형의 면적(Area of Simple Polygons) (0) | 2021.01.23 |
Binary Image에서 Convex Hull (0) | 2021.01.06 |
삼각형 외접원의 Inclusion Test (1) | 2020.12.30 |