Находить полностью содержащиеся квадраты в QPolygon?

Я ищу подход, чтобы найти набор квадратов, которые полностью содержатся внутри QPolygon, который не обязательно выпуклый. Мой наивный подход до сих пор выглядит так:

QRectF boundingRect(mShape->boundingRect());
for (int x = boundingRect.x() - 1; x < boundingRect.width(); x++)
{
for (int y = boundingRect.y() - 1; y < boundingRect.height(); y++)
{
QRectF rect(x, y, 1, 1);
QPolygonF cell(rect);
QPolygonF intersection = mShape->polygon().intersected(cell);
if (!intersection.empty())
{
// Cell is fully contained
}
}
}

Когда я визуализирую результат, он выглядит так:

Клетки, пересекающиеся с многоугольником, не пропускаются

Это почти то, что я хочу, за исключением того, что там не должно быть ячеек, пересекающихся с «контуром» многоугольника. У кого-нибудь есть хорошая идея, как я мог бы построить набор квадратов, которые полностью «внутри» многоугольника?

0

Решение

Предполагая, что большой многоугольник является выпуклым (это в вашем примере), должно быть достаточно проверить, что все четыре угла вашего квадрата находятся внутри большего многоугольника. Используйте метод containsPoint для большего многоугольника.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]