2012-02-21 11 views
2

私は次のことをしたい:私は、ポリゴンとして3D空間にいくつかの顔を持っています。私は投影方向と投影面を持っています。私は、投影面に凸のクリッピングポリゴンを持っています。私は平面にクリップされたすべての顔のシャドーを表すポリゴンを取得します。ポリゴン追加アルゴリズム

これまでのこと:面の投影を投影面でポリゴンとして計算します。

私は、Sutherland-Hodgmanアルゴリズムを使用して、すべての単一投影されたポリゴンをクリップして、目的の領域にクリップすることができました。

私の質問:どのように投影された(おそらくクリップされた)ポリゴンを組み合わせることができますか? Margalit/Knottのようなアルゴリズムを使用する必要がありますか?

アルゴリズムはかなり頻繁に実行する必要があるため、非常に効率的でなければなりません。だからあなたはどのようなアルゴリズムを想定していますか?

マージン問題を解決するためにSutherland-Hodgmanのアルゴリズムを変更することは可能でしょうか?

+0

「顔」:異なるアルゴリズム設計と既存のソリューションを見つけることができますか?これらは多面体の面ですか? – Beta

+0

面が凸多面体の面である可能性はありますか?そうであれば、頂点の投影の凸包を計算します。その後、そのポリゴンをクリップします。 – btilly

+0

はい、多面体からの顔です。単一の多面体を凸面に制限することができます。しかし、すべての顔の全体的な結合は、いかなる意味においても凸ではありません。 –

答えて

0

私は現在、Bentley-Ottmannを使用してすべてのエッジ交差を見つけながら、エッジセグメントの両側にポリゴンのネスティングレベルを記録するアルゴリズム(n凹ポリゴンの結合)を実装しています。ラインが接触している)。片側に0のネストレベルを持つエッジが結果ポリゴンに出力されます。正しいことを達成するのはかなり難しいことです。

http://sourceforge.net/projects/polyclipping/

関連する問題