2017-02-02 25 views
1

Я пытаюсь разбить многоугольник на линию, используя библиотеку Clipper. После выполнения отсечения он возвращает пустой путь. Может кто-то предложить правильный способ сделать то же самое.Обрезание строк и полигонов пуст Пути с использованием библиотеки Clipper (C++)


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 равен нулю.

ответ

3

Clipper не позволяет линиям (открытые пути) обрезать полигоны (закрытые пути). Однако он позволяет обрезать линии полигонами. (More info here.)

Кроме того, в вашем коде оба пути (объект и клип) отображаются как закрытые пути, и поскольку объект не имеет области, пересечение этого с полигоном клипа также не будет обладать, следовательно, пустое решение.

 Смежные вопросы

  • Нет связанных вопросов^_^