与えられた多角形を横切るのに十分な長さの線分を取得した場合、それは凹多角形または凸多角形である可能性があります。ポリゴンに含まれているすべての交差するライトセグメントをどのように見つけましたか?
ターゲット領域がポリゴンではなく、陰関数またはスプラインカーブの場合、どのように実行しますか?
ありがとう!
特に曲線(ベジエとスプライン)の場合、問題に対する簡単な解決策は実際にはありません。ポリゴンクリッピングの複雑さに加えて、クリップされた曲線を再構築するというかなりの課題があります(クリッピング結果を「平坦化された」線近似だけでなく、ベジエとスプラインとして残したい場合)。
最近、ポリゴンクリッピングライブラリ「Clipper」のベータアップデート*をリリースしました。これは、ラインポリゴンとラインラインクリッピングを実行します(ラインもカーブにすることができます)。ただし、メインライブラリはDelphi、C ++、C#で記述されていますが、新しいベータコードはこれまでのところDelphiでのみ作成されているため、役に立たない場合があります。それでも、コードを見ると、「単純な」解決策がないと私が述べている理由がわかります。
領域がポリゴンではなく、何らかの陰関数によって与えられている場合、その関数が赤い線と等しい場所を見つける必要があります(もちろん、アプローチは関数によって異なります)。