我需要计算2D多边形的面积(任何形状,任何大小等...)
我只有一个点列表,每个点都包含X和Y。
多边形位于2D块地图中,因此:
但是因为我必须使用块/矩形,所以多边形看起来更像这样:
所以必须计算出这个:
仅当超过50%的块在多边形内或者是该多边形的角/点时(如图像下方的手臂),块才在区域内。
是否可能进行计算? 而不用获取最小值和最大值,然后检查每个块...
我只找到了一些普通多边形的代码:
public int getArea(List<BlockVector2D> blockPoints)
{
double result = 0;
int j = blockPoints.size() - 1;
for (int i = 0; i < blockPoints.size(); ++i)
{
result += (blockPoints.get(j).getBlockX() + blockPoints.get(i).getBlockX()) * (blockPoints.get(j).getBlockZ() - blockPoints.get(i).getBlockZ());
j = i;
}
return (int) Math.abs(result / 2);
}
但我不知道如何使用块点来实现这一点...
对于大小和奇怪的图像以及我的英语表示抱歉。