我有一个 QPainterPath
可以保存任何序列的线和/或三次贝塞尔曲线。现在,我有一个 QPoint
,我需要计算 QPainterPath
和点之间的最短距离。由于路径本身除了存储元素以便我将它们添加到路径之外并没有做更多的事情,因此它本身不提供此类功能。我唯一的想法是使用 QPainterPath::toFillPolygon()
构造一个多边形,但这有时会返回一个等于路径的多边形,有时会返回一个空多边形。而且,QPolygonF
对象只是一个点的列表,有的连线,有的在原来的路径上是没有连接的,但是我也查不出哪些是连接的,哪些是不连接的。
是否有任何(简单)解决方案来计算 QPainterPath
(最好不转换为多边形)和 QPoint
之间的最短距离?
最佳答案
QPainterPath
有 pointAtPercent()
,因此您可以在给定的步骤迭代路径并检查路径上的多个点与目标点之间的距离。
这将为您提供大致最短的距离,如果您想要更高的精度,您可以专注于路径的那些段并以更精细的步骤进行迭代。
关于c++ - QPainterPath 和 QPoint 之间的最短距离,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35584121/