Umschließende ellipse
Habe ich eine Aufgabe für ein Grafik-Modul, ein Teil davon ist die Berechnung der minimum bounding-ellipse von einer Reihe von beliebigen Formen. Die ellipse muss nicht die Achse ausgerichtet.
Ist dies funktioniert in java (euch) mit den AWT-Formen, so kann ich alle Werkzeuge benutzen, die Form für die überprüfung der Rückhaltung/Kreuzung von Objekten.
- Trommelwirbel... und die Frage ist?
- dies ist, was kommt von schreiben Fragen auf 3.44 bin! Würden Sie glauben, ich mache Hausaufgaben in dieser Zeit der Nacht und es ist auch nicht für morgen? Was hat die Universität getan, um mich!? 😉
- wow... Ihr macht ja Coole Sachen. Es sei denn, ich bin fehlt die Hand, das ist nicht trivial...
- Nein, es ist nicht trivial, unsere Dozenten nur gelegentlich eine angemessene übung mit ein paar versehentlich unglaublich schwierige Fragen in geworfen, weil Sie nie wirklich darüber nachdenken, was Sie wollen - das ist wie für ein Unternehmen zu arbeiten, mit echten Benutzern!
- In der Tat, Sie nicht einmal erwähnen bounding shapes in der Vorlesung, das ist ein Grafik-Modul!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Du suchst die Minimum Volume Ellipsoid Umschließt, oder in Ihrer 2D-Fall, die minimale Fläche. Dieses Optimierungsproblem ist konvex und können effizient gelöst werden. Überprüfen Sie heraus den MATLAB-code in den link habe ich aufgenommen - die Umsetzung ist einfach und erfordert nicht etwas komplexer als eine matrix-inversion.
Wer Interesse an der Mathematik sollte Lesen dieses Dokument.
Auch, das zeichnen der ellipse ist auch einfach - das finden hier, aber benötigen Sie eine MATLAB-spezifische Funktion zu generieren, die Punkte auf der ellipse.
Aber da der Algorithmus liefert die Gleichung der ellipse in der matrix zu bilden,
können Sie diesen code verwenden, um zu sehen, wie können Sie konvertieren Sie die Gleichung auf die Normalform,
mit Singular-Wert-ZERLEGUNG (SVD). Und dann ist es ganz einfach, zeichnen Sie die ellipse mit der kanonische form.
Hier ist das Ergebnis der MATLAB-code auf einem Satz von 10 random 2D-Punkte (blau).
Andere Methoden wie PCA nicht garantieren, dass die ellipse, erhalten aus der ZERLEGUNG (eigen/singular-Wert) wird die minimale umschließende ellipse, da Punkte außerhalb der ellipse ist ein Maß für die Varianz.
EDIT:
Also wenn jemand das Dokument Lesen, es gibt zwei Wege zu gehen über diese in 2D: hier ist der pseudocode des optimalen Algorithmus - der suboptimalen Algorithmus ist eindeutig erklärt in dem Dokument:
Optimalen Algorithmus: