как я могу получить, если QPolygon прост?

Я кодирую инструмент, который позволяет рисовать многоугольники. Я хочу, чтобы они были простыми полигонами, и запрещаю рисовать сложные полигоны.

Я пробовал ToSubpathPolygons()

У меня есть список QPoints, которые образуют полигон.

Пишу на С++ + Qt. Я думаю, что я мог бы попробовать с пересечениями сегментов, и если есть пересечение, это не просто.

Я думал, что qpainterpath tosubpathPolygons должен дать мне более одного, если это сложный полигон. Проблема должна быть примерно такой:

if(q.toSubpathPolygons().length()==1)
{
//whatever
}
else{
    cout<<"not a polygon"<<endl;
}

person P.Perez    schedule 26.04.2017    source источник
comment
что вы имеете в виду, когда эта функция не работает должным образом? часто думает, что проблема где-то в другом месте, а не в вашем коде, только усложняет ее решение. Довольно маловероятно, что он сломан и никто не заметил раньше, не так ли? Предоставьте минимальный воспроизводимый пример   -  person 463035818_is_not_a_number    schedule 26.04.2017
comment
Проблема не в этом, я пытался использовать subpathpolygons, но думаю, что это не способ решить проблему.   -  person P.Perez    schedule 26.04.2017
comment
Ваш вопрос не ясен, вы могли бы задать что-то конкретное.   -  person eyllanesc    schedule 26.04.2017
comment
Что такое простой многоугольник?   -  person eyllanesc    schedule 26.04.2017
comment
google.es/   -  person P.Perez    schedule 26.04.2017
comment
если проблема не в этом, то в чем проблема? просто следуйте определению и проверьте, пересекаются ли какие-либо линии   -  person 463035818_is_not_a_number    schedule 26.04.2017
comment
Как я могу узнать, пересекаются ли какие-либо из них?   -  person P.Perez    schedule 26.04.2017
comment
@P.Perez, я могу предложить линейный алгоритм, который может проверить, является ли многоугольник (с одним контуром) простым. Вам этого достаточно?   -  person LmTinyToon    schedule 26.04.2017
comment
я думаю это было бы идеально   -  person P.Perez    schedule 26.04.2017
comment
прочитайте это: stackoverflow .com/questions/4001745/   -  person eyllanesc    schedule 26.04.2017