Zamówiłem kilka skórzanych prześcieradeł, z których chciałbym budować kuglarskie piłki, łącząc ze sobą krawędzie. Używam brył platońskich do kształtowania kulek.
Mogę zeskanować skórzane prześcieradła i wygenerować wielokąt zbliżony do kształtu skórzanego prześcieradła (jak wiecie, jest to skóra zwierzęca i nie ma prostokątów).
Chciałbym teraz zmaksymalizować rozmiar mojej żonglującej piłki.
W moim przykładzie wielokąty są regularne, ale szukam rozwiązania z prostymi wielokątami.
Jaki jest największy współczynnik skali, jaki mogę zastosować do moich wielokątów, aby wszystkie pasowały do arkusza?
Staram się zminimalizować marnotrawstwo, używając jak największej ilości materiału.
Oczywiście, przecięcie siatki wielościanu na indywidualny wielokąt zwiększy przestrzeń możliwej kombinacji, ale także obniży jakość ostatecznej geometrii, ponieważ wiąże się to z większą ilością szycia i nagromadzeniem błędów. Ale to pytanie nie dotyczy wyliczenia różnych sposobów rozkładania wielościanu. Można je rozpatrywać niezależnie. Wieloboki są więc prostymi wielobokami.
Formalnie:
Wkład:
- : prosty wielokąt (cel)
- : zbiór wielokątów, które chcę umieścić
- : wykres n prostych wielokątów - każdy węzeł reprezentuje prosty wielokąt w S , a między każdą parą wielokątów, które mają wspólną krawędź, jest jedna krawędź krawędzi
- (zużycie materiału i łączności)
Wynik:
- współczynnik skali
- , podgrupa G
- : położenie i kąt dla każdego wielokąta w V ( G )
- miara jakości rozwiązania: m = α . f + β . | E ( H ) |
Maksymalizuj zgodnie z następującymi warunkami:
- (1)
- (2)
- dla każdego wieloboku w S , S i skalowany przez współczynnik F w miejscu L O c ( znajduje się wewnątrz P (3)
- wielokąty w nie nakładają się (4)
(V (G) są wierzchołkami na wykresie, a S jest zbiorem wielokątów, ale opisują ten sam zestaw obiektów. Być może istnieje bardziej zwarty sposób.)
Objaśnienie warunków:
- (1) Chcę, aby wszystkie wielokąty były w ostatecznym układzie
- (2) Niektóre połączenia mogą zostać przerwane w razie potrzeby
- (3) (4) piłka wykonana jest ze skóry
Oto docelowy wielokąt
Oto zestaw wielokątów, które chcę spakować:
Odpowiedzi:
Należy to do klasy optymalizacji problemów zwanej Problemy z pakowaniem . W twoim przypadku zamiast zwykłego wielokąta jako pojemnika masz nieregularny, ale pomysł pozostaje ten sam.
Te problemy z optymalizacją są zwykle trudne dla NP, więc nie sądzę, że istnieje prosty sposób na uzyskanie dokładnego rozwiązania, a wypróbowanie wszystkich kombinacji byłoby zbyt kosztowne.
Są ludzie zainteresowani tego rodzaju problemami; Znalazłem ten link niektórych rozwiązanych problemów z pakowaniem: http://www2.stetson.edu/~efriedma/packing.html
Najłatwiejszy sposób, jaki widzę, to zdefiniowanie przybliżonego środka skórzanego prześcieradła, przeniesienie zestawu wielokątów tam i poprzez skalowanie w górę i w dół i sprawdzenie, czy zestaw wielokątów znajduje się wewnątrz wielokąta docelowego, aby uzyskać coraz bliżej współczynnik skali „f” dla pożądanego zestawu wielokątów.
Ale chyba, że zamierzasz użyć tego czynnika do produkcji piłek żonglerkowych na dużą skalę, prawdopodobnie zrobienie tego ręcznie byłoby wystarczające.
źródło