计算矢量图形的面积
struct point
{
double x;
double y;
};
double ring_area(std::vector<point> ring)
{
double sumX = 0;
double sumY = 0;
double area = 0;
for (size_t i = 0; i < ring.size(); i++)
{
point currentPoint = ring[i];
point nextPoint = ring[(i + 1) % ring.size()];
double product = (currentPoint.x * nextPoint.y) - (nextPoint.x * currentPoint.y);
area += product;
sumX += (currentPoint.x + nextPoint.x) * product;
sumY += (currentPoint.y + nextPoint.y) * product;
}
area /= 2;
area < 0 ? -area : area;
return area ;
}