Я пытаюсь разделить многоугольник по линии, используя библиотеку Clipper. После выполнения отсечения возвращается пустой путь. Может кто-то предложить правильный способ сделать то же самое.
Paths clip(2),soln;
clip[0] << IntPoint(-264,-210) << IntPoint(650,-209);
Path sub = clip[0];
Path poly << IntPoint(531,49) << IntPoint(-21,49) << IntPoint(-970,-961) << IntPoint(-945,-1019) << IntPoint(1045,-1071) ;
Clipper c;
c.AddPath(poly,ptSubject,true);
c.AddPath(sub,ptClip,true);
c.Execute(ctIntersection,soln,pftNonZero, pftNonZero);
std::cout << soln.size() << "soln size";
Размер soln равен нулю.
Clipper не позволяет линиям (открытые пути) обрезать полигоны (закрытые пути). Однако это позволяет обрезать линии полигонами. (Подробнее здесь.)
Кроме того, в вашем коде оба пути (субъект и клип), по-видимому, добавляются как замкнутые пути, и поскольку у объекта нет области, пересечение этого с многоугольником клипа также не будет иметь области, следовательно, пустое решение.
Других решений пока нет …