Clipper Lib Общая площадь путей (множественное число) - PullRequest
0 голосов
/ 30 мая 2018

Я гуглил и искал и не нашел ничего похожего на то, что мне нужно.

Clipper Lib предоставляет функцию для вычисления площади пути:

double Area(Path path)

Я не могу найти способ масштабирования для вычисления площади сложного многоугольника (многоугольники с отверстиями в них и т. Д.).

То есть мне нужно создать что-то похожее на это:

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

Может кто-нибудь просветить меня, как это сделать?Заранее спасибо

PS: Я не могу просто сделать сумму площадей, потому что у этого сложного многоугольника могут быть отверстия.

1 Ответ

0 голосов
/ 01 июня 2018

Кажется, что 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;
}
...