2017-12-11 3 views
-2

Ich habe eine rechteckige Platine und in ihr gibt es einige disjunkte 2D-Formen wie Rechtecke, Polygone und komplexere Geometrien, wie einfache Formen mit Bogen/Linie Kanten. Normalerweise sind sie kompakt, aber für einige Formen können wir sie vielleicht drehen oder übersetzen. Wenn wir eine Geometrie nach einer bestimmten Richtung verschieben, sollte die angrenzende Geometrie ebenfalls verschoben oder gedreht werden. Es sieht so aus, als ob die erste Geometrie die zweite Geometrie verschiebt. Die zweite Geometrie kann die anderen zwei Geometrien verschieben. Schließlich können wir einen weiteren stabilen Zustand erreichen, oder es gibt keinen Platz zum Schieben.2D-Geometrie Push-Algorithmus

Gibt es irgendwelche Untersuchungen dazu? Zuerst konzentrieren wir uns auf einfache Polygone, konvex und nicht konvex. Push könnte eine beliebige Richtung sein. example image

Ich mache einige Untersuchungen, konnte aber keine vorhandenen Papiere zu diesem Thema finden. Können wir es durch Mechanik oder Dynamik simulieren? Oder reiner Geometriealgorithmus?

Nur einige Schlüsselwörter für die Papiersuche sind ebenfalls sehr nützlich.

Ähnlich ist es mit dem Auto-Push-Konzept von EDA. Der Benutzer kann ein Element (Pin/Draht) einer Schaltung verschieben, dann schiebt die Software automatisch benachbarte Elemente, so dass die Topologie beibehalten wird und Designregeln eingehalten werden. Ich denke, ich kann einige Konzepte in der Mechanik verwenden, um mindestens die Bewegungsrichtung zu berechnen: Wenn der verbundene Teil von Polygon A und Polygon B ein Punkt ist, dann wird durch Drücken von A um eine Richtung eine Kraft nach B erzeugt normale Richtung. Aber die Kraft darf keine Bewegung erzeugen. Wir müssen alle Teile schleifen oder die Grenze erreichen, um zu überprüfen, wie viel sie bewegen kann. Lassen Sie uns die Rotation zuerst ignorieren.

+1

Willkommen bei Stack Overflow. (Nicht meine Hausaufgaben.com) Bitte zeigen Sie Ihre neuesten arbeitslosen Versuch, dieses Problem zu lösen. Es ist normalerweise aufschlussreicher, Korrekturen an Ihrem Code zu sehen, als die Lösung eines anderen zu lesen. Siehe https://stackoverflow.com/help/how-to-ask – Spangen

+0

Danke. In der Tat habe ich einige Untersuchungen tue und möchte nur wissen, ob jemand aktuellen Zustand dieses Problem kennt und einige mathematische Diskussion tun, wenn nötig. – gangw

+1

Was soll in dem von Ihnen bereitgestellten Beispiel passieren? Denkst du an eine Art Physiksimulation? – SaiBot

Antwort

0

Ich poste eine Antwort, weil ich nicht genug Ruf für einen Kommentar habe. Wenn ich das Problem nicht falsch verstehe, klingt das geometrisch wie ein Kollisionserkennungsproblem. Sie müssen eine Transformation (Translation, Rotation) auf Ihre Geometrie anwenden und prüfen, ob diese neue Position mit einer anderen Geometrie überlappt. Wenn dies der Fall ist, müssen Sie eine zweite Transformation anwenden. Kollisionserkennung ist ein großes Thema in Spielen und Simulationen.