我正在使用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);

文档还不太清楚,但是您可以推断使用,并且测试(Try-Error Loops)是您的朋友(我不会安装GPC来执行此操作,所以我的代码 可以 是错的)。提出的代码片段应创建一个正方形。其他几个 gpc_add_countour 使用相同的&p,但可以使用不同的顶点列表来创建更复杂的多边形,当然可以更改VL以在开始时具有更复杂的多边形。如果您希望定义的轮廓为电流(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