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ć: