0

我用谷歌搜索和搜索,没有找到与我需要的类似的东西。

Clipper Lib 提供了一个计算路径面积的函数:

double Area(Path path)

我找不到一种方法来缩放它以计算复杂多边形的面积(其中有孔的多边形等)。

意思是,我需要创建类似的东西:

double Area(Paths paths, PolyFillType FillType = PolyFillType.pftEvenOdd)

请有人启发我如何做到这一点?先感谢您

PS:我不能简单地求面积之和,因为这个复杂的多边形可能有洞。

4

1 回答 1

1

看起来 Clipper.Area() 将洞作为负面积值返回,所以我们可以总结一切。

double CalcArea(List<List<IntPoint>> polygon)
{
    List<List<IntPoint>> paths = Clipper.SimplifyPolygons(polygon);
    double totalArea = 0;
    for (int i = 0; i < paths.Count; i++)
        totalArea += Clipper.Area(paths[i]);
    return totalArea;
}
于 2018-06-01T16:00:12.423 回答