у меня есть QPainterPath
который может содержать любую последовательность линий и / или кубических кривых Безье. Теперь у меня есть QPoint
что мне нужно рассчитать кратчайшее расстояние между QPainterPath
и точка. Так как сам путь не делает намного больше, чем сохранение элементов для того, чтобы я добавил их в путь, он сам по себе не обеспечивает такую функциональность. Единственная идея, которую я имел, состояла в том, чтобы построить многоугольник, используя QPainterPath::toFillPolygon()
, но иногда мне возвращается многоугольник, равный пути, а иногда пустой многоугольник. Кроме того, QPolygonF
Объект — это просто список точек, некоторые из которых связаны линиями, а некоторые не связаны в исходном пути, но я не могу выяснить, какие из них связаны, а какие нет.
Есть ли (простое) решение для расчета кратчайшего расстояния между QPainterPath
(предпочтительно без преобразования в многоугольник) и QPoint
?
QPainterPath
имеет pointAtPercent()
так что вы можете повторить путь на данном шаге и проверить расстояния между количеством точек, лежащих на пути, и целевой точкой.
Это даст вам примерно кратчайшее расстояние, и если вы хотите большей точности, вы можете сфокусироваться на этих сегментах пути и выполнить итерации на более тонком шаге.
Других решений пока нет …