バイトの行列(ビットマップのような行列)で表されるFigureがあります。例の図はに示されていPicture 1
ます。
目標は、特定の図の最適な回転角度を見つけることです。Figureが最適な角度だけ回転すると、X軸とY軸に平行でFigureに内接する長方形の面積が最小になります。
図に内接する長方形は、写真上で薄い灰色で示されています。ではPicture 2
、あなたは図の理想的な回転が時計回りに約30度であることがわかります。
今、私はこの角度を見つける方法をアルゴリズムを知っていますが、それは非常に効率が悪いようです。こんなふうになります:
- 0から45までの角度でループします。
- 現在の角度について、すべての図形ポイントについて、新しい、回転した、位置を計算します
- 数字(最小および最大x、y)を含む長方形の境界を見つけ、これまでで最良の一致である場合は登録します
- 次の角度
これは一種のブルートフォース方式であり、小さな人物に対してはうまく機能し、適度に高速です。ただし、最大1,000万ポイントを含む数値を使用する必要があり、アルゴリズムが遅くなります。
この問題に適したアルゴリズムは何でしょうか?