0

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
        }
    }
}

結果を視覚化すると、次のようになります。

ポリゴンと交差するセルは除外されません

ポリゴンの「アウトライン」と交差するセルがそこにあるべきではないことを除いて、これはほとんど私が望むものです。ポリゴンの完全に「内側」にある正方形のセットを作成する方法を知っている人はいますか?

4

1 に答える 1

1

大きい方のポリゴンが凸面であると仮定すると(この例では)、正方形の4つの角すべてが大きい方のポリゴンの内側にあることを確認するだけで十分です。大きい方のポリゴンでcontainsPointメソッドを使用します。

于 2012-11-05T08:07:44.503 に答える