Hallo!
Ich möchte den kürzesten Abstand eines Punktes A zur Oberfläche eines beliebigen QGraphicItems berechnen. Dazu habe ich mir überlegt, den Umriss (also den QPainterPath, den man mit QGraphicsItem::shape () bekommt) in (endlich viele) Punkte zu zerlegen, den Abstand dieser Punkte zu A zu berechnen und dann den kleinsten rauszusuchen.
Ich hab schon mal in der Qt-Hilfe geschaut, ob es nicht schon eine fertige Funktion dafür gibt (die z.B. die Koordinaten aller Pixel des Path's in ein Array schreibt) aber ich hab nichts gefunden.
Kann mir jemand einen Tip geben, wie ich mein Problem lösen könnte?
Vielen Dank für eure Hilfe!
kürzester Abstand eines Punktes zu beliebigem QPainterPath
Hallo kater,
danke für den Tip.
In der Hilfe steht, dass jeder QPainterPath aus (moveTo(), lineTo() and cubicTo())-Elementen besteht, und dass man mit QPainterPath::elementCount () rauskriegt, wie viele es sind, und mit QPainterPath::elementAt(int index) dann den jeweiligen Typ des Elements bestimmen kann.
Also müsste ich die Abstandsberechnung für jedes Element einzeln durchführen (gerade vor dem cubicTo() graust es mir). Ich werde erstmal testen, wie das funktioniert, aber kennt nicht jemand vielleicht eine einfachere Methode?
danke für den Tip.
In der Hilfe steht, dass jeder QPainterPath aus (moveTo(), lineTo() and cubicTo())-Elementen besteht, und dass man mit QPainterPath::elementCount () rauskriegt, wie viele es sind, und mit QPainterPath::elementAt(int index) dann den jeweiligen Typ des Elements bestimmen kann.
Also müsste ich die Abstandsberechnung für jedes Element einzeln durchführen (gerade vor dem cubicTo() graust es mir). Ich werde erstmal testen, wie das funktioniert, aber kennt nicht jemand vielleicht eine einfachere Methode?