2017-05-09 3 views
-1

ポリゴンをモノトーン部分に分割するアルゴリズムを書いたが、ポリゴンをどのように小さなポリゴンに分割するかはわからないので、独立して処理できるポリゴン構造を分離している。私が試してみましたコードは明らかに間違っている:Qtはポリゴンをより小さなポリゴンに分解する

QPolygonF polyg(polygon); // copy orginal polygon 
polyg << diagonalP1 << diagonalP2; // ad the diagonal points 
QPolygonF clipped = polygon.intersected(polyg); // get the intersection? 
clippedPolygons.append(clipped); // add to the list 

これは明らかに動作していないですが、私は任意のより良いaproachを見つけることができませんでした。問題をilustrating画像:あなたが追加する必要が見つかった対角線を表す破線でオリジナルのポリゴンを見ることができる画像で

original polygon with diagonals

。今私は別々に4つの部分を取得する必要があるので、私はそれぞれをそれぞれ独立に三角測量することができます。

答えて

0

実際に効率的な三角形分割アルゴリズムを実装することは困難です。実際にはQT Triangulation Libraryがあります。たぶん、それを見るのが理にかなっています。


コードの行:

polyg << diagonalP1 << diagonalP2; // ad the diagonal points 

あなたは、三角測量のために挿入したい対角線がポリゴン上の点から構成されているので、そこにすでにあるコピーされたポリゴンにポイントを追加するようです境界。おそらくこのようなものがうまくいくかもしれません(効率的ではありません)。

int indexA = polyg.lastIndexOf(diagonalP1) 
int indexB = polyg.lastIndexOf(diagonalP2) 
polyg.remove(indexA+1,indexB-1) 
+0

これは残念ながらうまくいきません。それはQt GUIによるアルゴリズムのデモンストレーションであり、学校のプロジェクトでもあるので効率は必要ありません... – Croolman

関連する問題