###前提・実現したいこと
2次元の頂点情報(x,y)の組が複数あり、各頂点の座標値が分かっています。
これらの点を結び、多角形の生成を行いたいです。
OpenGLを使って各頂点をワイヤーフレームで結び、図形を描画します。
そこで、多角形の各線分が交差することのないように、頂点の順序を正しく並べ替える方法が分からず困っています。
図形問題に強い方、どうか知恵を貸していただけないでしょうか。よろしくお願い致します。
typedef struct{
double x,y
} vertex2d
とし、vertex2d型の配列 obj[nvertex] (nvertexは頂点の数です)をつくり
その中の、obj[○○].x obj[○○].y に各頂点の座標値が格納してあります。これらの値が並べ替えの対象となります。
○○は頂点番号です。0番目から、多角形の頂点の数だけ数字が続きます。
###発生している問題・エラーメッセージ
描画した多角形の線分が交差してしまい、1つの多角形として表示されません。 ある頂点に対し最も近い位置にある点を次の頂点として並べ替えを行った場合、上手くいかないケースが発生しました。
###該当のソースコード
下の処理を実行する前に、obj[nv].x obj[nv].yに格納されている頂点情報をソートしたいです。 glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);でワイヤーフレームが描画されるように設定した後、 glBegin(GL_POLYGON); for (int nv = 0; nv < nvertex; ++nv) { nvertexは頂点の数です。 glVertex3f(obj[nv].x,obj[nv].y);nv番目の頂点の座標値を指定しています。 } glVertex3f(obj[0].x,obj[0].y);最後に、1番最初の頂点に戻り、多角形の描画が終わります。 glEnd(); と記述し、多角形の描画を実行しています。

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。