Ich habe ein paar Lederbögen bestellt, aus denen ich durch Zusammennähen von Kanten Jonglierbälle bauen möchte. Ich benutze die platonischen Körper für die Form der Kugeln.
Ich kann die Lederbögen scannen und ein Polygon erzeugen, das der Form des Lederbogens nahekommt (wie Sie wissen, handelt es sich um Tierhaut, die nicht in Rechtecken vorliegt).
Jetzt möchte ich die Größe meines Jonglierballs maximieren.
In meinem Beispiel sind die Polygone reguläre Polygone, aber ich suche nach einer Lösung mit einfachen Polygonen.
Was ist der größte Skalierungsfaktor, den ich auf meine Polygone anwenden kann, damit sie alle in das Blatt passen?
Ich versuche, den Abfall so gering wie möglich zu halten, indem ich so viel Material wie möglich verwende.
Offensichtlich vergrößert das Schneiden des Polyedernetzes in einzelne Polygone den Kombinationsspielraum, verringert jedoch auch die Qualität der endgültigen Geometrie, da mehr Nähfehler und Fehler auftreten. Bei dieser Frage geht es jedoch nicht darum, die verschiedenen Arten der Entfaltung eines Polyeders aufzuzählen. Sie können unabhängig voneinander betrachtet werden. Die Polygone sind also einfache Polygone.
Formal:
Eingang:
- : ein einfaches Polygon (das Ziel)
- : Die Menge der Polygone, die ich platzieren möchte
- : ein Graph von n einfachen Polygonen - jeder Knoten repräsentiert ein einfaches Polygon in S , und es gibt eine Kantenkante zwischen jedem Paar von Polygonen, die eine gemeinsame Kante teilen
- (Materialverbrauch und Konnektivität)
Ausgabe:
- ein Skalierungsfaktor
- , ein Teilgraph von G
- : ein Ort und ein Winkel für jedes Polygon in V ( G )
- ein Maß für die Qualität der Lösung: m = α . f + β . | E ( H ) |
Maximiere unter folgenden Bedingungen:
- (1)
- (2)
- für jedes Polygon in S liegt S i, skaliert um einen Faktor f an der Stelle L o c ( S i ) innerhalb von P (3)
- Polygone in überlappen sich nicht (4)
(V (G) sind die Eckpunkte im Diagramm, und S ist die Menge der Polygone, aber sie beschreiben dieselbe Menge von Objekten. Vielleicht gibt es eine kompaktere Möglichkeit, dies zu tun.)
Erklärung der Bedingungen:
- (1) Ich möchte, dass alle Polygone im endgültigen Layout sind
- (2) Einige Verbindungen können bei Bedarf unterbrochen werden
- (3) (4) Der Ball besteht aus Leder
Hier ist das Zielpolygon
Hier ist die Menge der Polygone, die ich packen möchte:
Antworten:
Dies gehört zu einer Optimierungsklasse von Problemen, die als Verpackungsprobleme bezeichnet werden . In Ihrem Fall haben Sie anstelle eines regulären Polygons als Container ein unregelmäßiges, aber die Idee bleibt dieselbe.
Diese Optimierungsprobleme sind in der Regel nicht einfach zu lösen, und ich glaube nicht, dass es zu teuer wäre, alle Kombinationen auszuprobieren.
Es gibt einige Leute, die sich für diese Art von Problemen interessieren. Ich habe diesen Link von einigen gelösten spezifischen Verpackungsproblemen gefunden: http://www2.stetson.edu/~efriedma/packing.html
Der einfachste Weg, den ich sehe, besteht darin, eine ungefähre Mitte des Lederblatts zu definieren, die Menge der Polygone dorthin zu verschieben und durch Skalieren und Verkleinern und Überprüfen, ob die Menge der Polygone innerhalb des Zielpolygons liegt oder nicht, eine zu erhalten näher und näher Skalierungsfaktor 'f' für Ihre gewünschte Menge von Polygonen.
Aber wenn Sie diesen Faktor nicht für eine große Produktion von Jonglierbällen verwenden, ist es wahrscheinlich ausreichend, ihn von Hand zu machen.
quelle