質問

GPCを使用しています ポリゴンクリッピングLIB プログラムでポリゴンを作成したい。ファイルからそれを作成する方法のコードのみが表示されます。コードで初期化を行うにはどうすればよいですか?

正しい解決策はありません

他のヒント

リンクからよく読んでください doc ページと読み取り;特に gpc_add_contour 機能はおそらく必要なものです。 struct gpc_vertex_listは、gpc_vertex-sと頂点の数へのポインターを保持しています。


gpc_polygon p = {0, NULL, NULL}; // "void" polygon
gpc_vertex v[] = { {0.0, 0.0}, {10.0, 0.}, {10.0, 10.10}, {0.0, 10.0} };
gpc_vertex_list vl = {
  4, v
};
//...
gpc_add_contour(&p, &vl, 0);

ドキュメントはあまり明確ではありませんが、使用を推測することができ、テスト(トライエラーループ)があなたの友人です(とにかくGPCをインストールしませんので、私のコード できる 間違っている)。提案されたコードスニペットは正方形を作成する必要があります。他のいくつか gpc_add_countour 同じ&Pで異なる頂点リストを使用して、より複雑なポリゴンを作成するために使用でき、もちろんVLを最初により複雑なポリゴンを持つように変更できます。 3番目のパラメーターは、定義された輪郭を電流(P)ポリゴンの「穴」にしたい場合は1でなければなりません。

gpc_polygon subject;
int w = 100, h = 100, verticesCnt = 30;

//setup a gpc_polygon container and fill it with random vertices ...
subject.num_contours = 1;
subject.hole = 0;
subject.contour = new gpc_vertex_list; //ie just a single polygon here
subject.contour->num_vertices = verticesCnt;
subject.contour->vertex = new gpc_vertex [verticesCnt];
for (i = 0; i < verticesCnt; i++){
    subject.contour[0].vertex[i].x = random(w);
    subject.contour[0].vertex[i].y = random(h);
}

//do stuff with it here, then ...

gpc_free_polygon(&subject);
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top