найти пересечение линий при рисовании свободного пути с помощью QPainterPath

Я реализую рисунок в произвольной форме для рисования свободного пути с помощью нажатия мыши и перемещения с помощью Qpainter QPainterpath

Теперь я должен определить, когда именно нарисованный путь пересекается или пересекается с другим. как я могу определить, когда линии пересекались друг с другом в какой-то момент, и предупредить пользователя.

введите здесь описание изображения


person Wagmare    schedule 19.02.2015    source источник


Ответы (1)


Qt API не имеет такой возможности, чтобы сказать, пересекается ли путь, состоящий из разных элементов, в точке или нет. Вы должны проверить это самостоятельно. Когда путь закончен, сравните кусочные сегменты пути, используя функцию QPainterPath::​intersects. Доступ к элементам можно получить через QPainterPath::​elementAt(int index).

person Nejat    schedule 19.02.2015
comment
поэтому я должен передать тот же путь художника в качестве аргумента ..? - person Wagmare; 19.02.2015
comment
Нет. Это решение было для разных путей. В API нет ничего, чтобы проверить пересечение одного пути. Вы должны сделать это самостоятельно. Смотрите обновленный ответ. - person Nejat; 19.02.2015
comment
жаль просить вас об этом поздно. QPainterPath::Element repPath = thePath.elementAt(i); возвращает элемент. тогда как я могу проверить точки в нем ..? я должен использовать многоугольник вместо него ..? - person Wagmare; 23.02.2015