2017-02-02 60 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.)

此外,在您的代碼中,兩個路徑(主題和剪輯)看起來都被添加爲封閉路徑,並且由於主題沒有區域,因此與剪輯多邊形的交集也將沒有區域,因此空解決方案。