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);
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top