2017-02-02 3 views
1

クリッパーライブラリーを使用してラインでポリゴンを分割しようとしています。クリッピングの実行後、空のパスを返します。誰かが同じことをする正しい方法を提案することができます。ラインとポリゴンのクリッピングがクリッパーライブラリー(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

クリッパーでは、ポリゴン(閉じたパス)をクリップするための線(開いたパス)は使用できません。ただし、ポリゴンで線を切り取ることはできません。 (More info here.)

また、あなたのコードでは、両方のパス(サブジェクトとクリップ)がクローズパスとして追加されているように見えます。また、サブジェクトに領域がないため、クリップポリゴンとの交差もエリアを持たないため、空の解。

関連する問題