Inicialización de polígono GPC
Pregunta
Estoy usando el GPC Recorte de polígono lib y quiero crear un polígono programáticamente. Solo veo código sobre cómo crear uno desde un archivo. ¿Cómo puedo hacer la inicialización en mi código?
No hay solución correcta
Otros consejos
Leer mejor de su enlace, encuentre el doc página y leer; En particular gpc_add_contour
Es probable que la función sea lo que necesitas. El struct gpc_vertex_list contiene un puntero a gpc_vertex-s y el número de vértice, y es lo que debe completar. Como.
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);
El documento no es demasiado claro, pero puede deducir el uso y las pruebas (try-error loops) es su amigo (no instalaré GPC para hacerlo de todos modos, por lo que mi código pudo estar equivocado). El fragmento de código propuesto debe crear un cuadrado. Varios otros gpc_add_countour
Con lo mismo y P, pero se puede usar una lista de vértices diferentes para crear un polígono más complejo y, por supuesto, se puede cambiar VL para tener al principio un polígono más complejo. El tercer parámetro debe ser 1 si desea que el contorno definido sea un "agujero" en el polígono actual (P).
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);