根据凸多边形顶点坐标来计算面积的算法与实现

把凸多边形划分成若干个三角形,取多边形的一个顶点为三角形共同顶点

double x0 = x.get(0);
double y0 = y.get(0);

三角形个数 = 坐标对数 – 2

// 每个三角形的三条边 i从0开始
double s1 = Math.sqrt(Math.pow(x0 - x.get(i + 1), 2) + Math.pow(y0 - y.get(i + 1), 2));
double s2 = Math.sqrt(Math.pow(x0 - x.get(i + 2), 2) + Math.pow(y0 - y.get(i + 2), 2));
double s3 = Math.sqrt(Math.pow(x.get(i + 1) - x.get(i + 2), 2) + Math.pow(y.get(i + 1) - y.get(i + 2), 2));
// 每个三角形的面积
double s = (s1 + s2 + s3) / 2;
double area = Math.pow((s * (s - s1) * (s - s2) * (s - s3)), 1.0 / 2);