Вопрос

Я использую GPC Полигона обрезка либера и хочу создать многоугольный программатически. Я вижу только код для создания одного из файла. Как я могу сделать инициализацию в моем коде?

Нет правильного решения

Другие советы

Читайте лучше по вашей ссылке, найдите док страница и прочитать; особенно gpc_add_contour Функция, вероятно, вам нужна. Struct gpc_vertex_list содержит указатель на gpc_vertex-s и количество вершины, и это то, что вы должны заполнить. Как


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

Док не слишком ясен, но вы можете сделать вывод использования, а тестирование (петли Try-error)-это ваш друг (я все равно не буду устанавливать GPC, так что мой код мог быть неправым). Предложенный фрагмент кода должен создать квадрат. Несколько других gpc_add_countour С таким же и p, но различный список вершин можно использовать для создания более сложного многоугольника, и, конечно, VL может быть изменен, чтобы в начале более сложный многоугольник. Третий параметр должен быть 1, если вы хотите, чтобы определенный контур был «отверстием» в текущем (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);
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top