Ich habe eine Figur durch eine Matrix von Bytes (Bitmap-ähnliche Matrix) dargestellt. Beispiel Abbildung ist auf dem Bild zu sehen Picture 1
.
Das Ziel ist es, den besten Drehwinkel einer bestimmten Figur zu finden . Wenn die Figur um den besten Winkel gedreht wird, hat das Rechteck, das parallel zur X- und Y-Achse verläuft und die Figur beschriftet, die kleinste Fläche.
Rechtecke, die die Figur beschriften, sind auf den Bildern hellgrau dargestellt. In der Picture 2
ist zu sehen, dass die ideale Drehung der Figur etwa 30 Grad im Uhrzeigersinn beträgt.
Nun, ich weiß Algorithmus, wie man diesen Winkel findet, aber es scheint mir, dass das sehr ineffizient ist. Es geht so:
- Schleife durch Winkel von 0 bis 45.
- Berechnen Sie für den aktuellen Winkel für jeden Zahlenpunkt eine neue, gedrehte Position
- Finden Sie die Grenzen des Rechtecks, das die Figur enthält (minimales und maximales x, y) und registrieren Sie es, wenn dies die beste Übereinstimmung bisher ist
- Nächster Winkel
Dies ist eine Art Brute-Force-Methode und funktioniert für die kleinen Figuren gut und relativ schnell. Ich muss jedoch mit Zahlen arbeiten, die bis zu 10 Millionen Punkte enthalten, und mein Algorithmus wird langsam.
Was wäre ein guter Algorithmus für dieses Problem?