2017-02-02 5 views
1

Ich versuche, ein Polygon durch eine Linie unter Verwendung der Clipper-Bibliothek aufzuteilen. Nach der Ausführung des Clippings gibt es einen leeren Pfad zurück. Kann jemand den richtigen Weg vorschlagen, das Gleiche zu tun?Zeilen- und Polygon-Clipping gibt leere Pfade mit Clipper-Bibliothek (C++) zurück


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"; 

Die Lsg Größe Null ist.

Antwort

3

Clipper erlaubt keine Linien (offene Pfade) zum Abschneiden von Polygonen (geschlossene Pfade). Es erlaubt jedoch, dass Linien durch Polygone abgeschnitten werden. In Ihrem Code werden beide Pfade (Subjekt und Clip) scheinbar als geschlossene Pfade hinzugefügt, und da das Subjekt keinen Bereich hat, wird auch der Schnittpunkt des Objekts mit dem Clip-Polygon keinen Bereich haben leere Lösung.

Verwandte Themen