QPolygonF hat Methoden zum Vereinigen, Schneiden und Subtrahieren mit anderen QPolygonFs, aber ich muss einen Schnittpunkttest mit einem QLineF durchführen. Dies scheint in der API zu fehlen.
Ich denke, ich könnte so etwas tun:
if (polygon .containsPoint (line .p1 ()) != polygon .containsPoint (line .p2 ())
return true;
QPointF a = polygon .back ();
foreach (QPointF b, polygon)
{
if (QLineF :: BoundedIntersection == line .intersect (QPointF (a, b))
return true;
a = b;
}
return false;
Wahrscheinlich lauern in den obigen Angaben einige numerische Überraschungen, die ich lieber nicht nennen möchte.
Gibt es irgendwo in der Qt-API eine bereitgestellte Methode, die ich nicht sehen kann?