3

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

4

2 に答える 2

0
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);
于 2010-06-06T05:03:25.703 に答える
0

リンクからよく読んで、ドキュメントページを見つけて読んでください。特に、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);

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

于 2010-06-05T17:09:08.157 に答える