首页 > 解决方案 > Clipper Lib 总路径面积(复数)

问题描述

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

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

double Area(Path path)

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

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

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

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

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

标签: c#clipperlib

解决方案


看起来 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;
}

推荐阅读