GPC Poligono di inizializzazione
Domanda
Sto usando il GPC poligono di ritaglio lib e vogliono per creare un poligono programatically. Vedo solo codice per come crearne uno da un file. Come posso fare l'inizializzazione nel mio codice?
Nessuna soluzione corretta
Altri suggerimenti
Leggi meglio dal tuo link, trovare il doc pagina e leggere; in particolare funzione gpc_add_contour
è probabile che cosa avete bisogno. Il gpc_vertex_list struct contiene un puntatore a gpc_vertex-s e il numero di vertice, ed è ciò che è necessario compilare. Come
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);
Il dottore non è troppo chiaro, ma è possibile dedurre l'uso, e la sperimentazione (loop try-errore) è tuo amico (io non installerà GPC di farlo comunque, quindi il mio codice potrebbero sbagliarmi). Il frammento di codice proposto dovrebbe creare un quadrato. Molti altri gpc_add_countour
con lo stesso e p ma diverso elenco vertice può essere usato per creare un poligono più complessa, e naturalmente vl può essere modificato per avere all'inizio il poligono più complessa. Il terzo parametro dovrebbe essere 1 se si desidera che il profilo definito per essere un "buco" nella corrente del poligono (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);