2010-06-05 5 views

Répondre

0

Lisez mieux à partir de votre lien, trouvez la page doc et lisez; en particulier gpc_add_contour fonction est probablement ce dont vous avez besoin. Le gpc_vertex_list struct tient un pointeur vers gpc_vertex-s et le nombre de sommets, et est ce que vous devez remplir. Comme


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); 

Le doc est pas trop clair, mais vous pouvez en déduire l'utilisation et de test (try-error loops) est votre ami (je n'installerai pas gpc pour le faire de toute façon, donc mon code pourrait se tromper). L'extrait de code proposé doit créer un carré. Plusieurs autres gpc_add_countour avec le même & p mais une liste de vertex différente peut être utilisée pour créer un polygone plus complexe, et bien sûr vl peut être changé pour avoir au début un polygone plus complexe. Le troisième paramètre doit être 1 si vous voulez que le contour défini soit un "trou" dans le polygone courant (p).

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);