평면상의 다각형(모서리의 교차가 없는 단순 다각형)의 면적을 구하는 것은 단순하지 않을 것처럼 보이지만 계산식은 무척이나 간단하게 주어진다. 기본적인 아이디어는 다각형에 임의의 점을 찍으면 이 점과 이웃한 두 개의 꼭짓점으로 형성이 되는 삼각형의 합으로 다각형을 분할할 수 있다. 분할된 삼각형의 면적을 구하여 합산하면 다각형의 면적을 구할 수 있다.

세 점

로 주어지므로, 꼭짓점이
이 결과는
double simplePolygonArea(const std::vector<CPoint>& point) {
double area = 0;
for (int i = 0, j = point.size()-1; i < point.size(); j = i++)
area += point[i].x * point[j].y - point[i].y * point[j].x;
area /= 2;
// return area; // signed area;
return area < 0 ? -area: area;
}
728x90
'Computational Geometry' 카테고리의 다른 글
단순 다각형의 Convex Hull(convex hull of a simple polygon) (0) | 2021.01.24 |
---|---|
단순 다각형의 무게중심(Centroid of Simple Polygons) (0) | 2021.01.24 |
Binary Image에서 Convex Hull (0) | 2021.01.06 |
삼각형 외접원의 Inclusion Test (1) | 2020.12.30 |
Point in Polygon (2) | 2020.12.14 |