Question

J'utilise le GPC Polygon Clipping lib et manque pour créer un polygone par programmation. Je ne vois que le code pour savoir comment créer un à partir d'un fichier. Comment puis-je faire l'initialisation dans mon code?

Pas de solution correcte

Autres conseils

En savoir plus à partir de votre lien, trouver doc et lire la page; en particulier la fonction gpc_add_contour est probablement ce que 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 (boucles essai-erreur) est votre ami (je ne vais pas installer gpc de le faire de toute façon, donc mon code peut se tromper). L'extrait de code proposé devrait créer un carré. Plusieurs autres gpc_add_countour avec le même & p mais différente liste des sommets peut être utilisé pour créer un polygone plus complexe, et bien sûr vl peut être changé pour avoir au début d'un polygone plus complexe. Le troisième paramètre doit être 1 si vous voulez dans le polygone actuel (p) le contour défini comme un « trou ».

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);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top