2013-06-28 15 views
8

Ich möchte die Rotation und die Position für ein Polygon, das maximiert, wie groß es innerhalb der Einschränkungen der Anpassung in einem größeren Polygon skaliert werden kann.Finden Sie maximale Fläche Polygon in größeren Polygon eingeschrieben

polygons

Aktuelle Idee ist scipy optimization routines zur Optimierung der Position und Rotationsparametern zu verwenden, um den Skalierungsparameter zu maximieren und shapely eine Einschränkung hinzuzufügen, die das Polygon enthalten ist. Dies scheint, als wäre es langsam und nicht besonders elegant.

Andere Ideen?

+0

Sind diese einfachen Polygone? Gibt es eine Grenze für die Anzahl der Seiten? –

+0

Ja, einfach Polygone. Einige von ihnen können in der Größenordnung von 100 Seiten haben. – daedalus12

+0

Ich versuche etwas Ähnliches herauszufinden - kannst du mir sagen, welche Routinen du bei scipy verwendest? –

Antwort

1

Dieses Problem klingt nach NP-Hard. Angesichts einer Kandidatenlösung kann man nicht wirklich sicher sein, dass es die beste Lösung ist. Es scheint, als müssten Sie versuchen, eine inkrementelle randomisierte Suche zu verwenden.

1

Wenn die interne Polygon maximal skaliert wird, dann gibt es mindestens 4 Paare „internal vertice - Außenkante“ oder „externe vertice - internal edge“, wo die vertice am Rande ist.

Nehmen wir alle 4s der Vertice- Kantenpaare. Für jeden berechnen wir das System der linearen Gleichungen für die Koordinaten der beiden Bezugspunkte. Wenn es eine Lösung gibt, verifizieren wir, dass es keine Schnittpunkte gibt, und wenn OK, erinnern wir uns an die Koordinaten und die Größe des internen Polygons.

Dies ist eine genaue Lösung, aber es ist langsam. Auf der anderen Seite finden scipy Optimierungsroutinen wahrscheinlich ein lokales Maximum, das nicht das globale ist.