QPolygonF имеет методы для объединения, пересечения и вычитания с другими QPolygonF, но мне нужно выполнить тест пересечения с QLineF.Это кажется отсутствующим в API.
Полагаю, я мог бы сделать что-то вроде этого:
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;
Вероятно, в приведенном выше примере есть некоторые неожиданности с числовыми или краевыми случаями, поэтому ялучше нет.
Есть ли где-нибудь в Qt API предоставленный метод, который я не вижу?