Я замовив кілька шкіряних простирадлів, з яких я хотів би побудувати кульки для жонглювання, зшиваючи краї разом. Я використовую платонові тверді тіла для форми кульок.
Я можу сканувати шкіряні простирадла та генерувати багатокутник, який наближає форму шкіряного простирадла (як ви знаєте, це шкіра тварин, і вона не йде у прямокутники).
Тож зараз я хотів би максимально збільшити розмір мого жонглювання м'ячем.
У моєму прикладі багатокутники є звичайними, але я шукаю рішення з простими багатокутниками.
Який найбільший коефіцієнт масштабу, який я можу застосувати до своїх багатокутників, щоб усі вони помістилися всередині аркуша?
Я намагаюся мінімізувати відходи, використовуючи якомога більше матеріалів.
Очевидно, що розрізання багатогранної сітки на окремий багатокутник збільшить простір можливої комбінації, а також знизить якість кінцевої геометрії, оскільки тут більше задіяних швів та накопичених помилок. Але це питання не про перерахування різних способів розгортання багатогранника. Їх можна розглядати самостійно. Отже багатокутники - це прості багатокутники.
Формально:
Вхід:
- : простий багатокутник (ціль)
- : набір багатокутників, які я хочу розмістити
- n S : графік з простих багатокутників - кожен вузол являє собою простий багатокутник у , а між кожною парою багатокутників, які мають спільний край, є один край краю
- (використання матеріалу та підключення)
Вихід:
- коефіцієнт масштабу
- Г , підграф
- V ( G ) : розташування та кут для кожного багатокутника в
- міра якості рішення:m = α . f + β . | E ( H ) |
Максимізуйте відповідно до цих умов:
- (1)
- (2)
- для кожного багатокутника в , масштабований на коефіцієнт у місці знаходиться всередині (3)
- багатокутники в не перетинаються (4)
(V (G) - вершини на графіку, S - сукупність багатокутників, але вони описують однаковий набір об'єктів. Можливо, є більш компактний спосіб це зробити.)
Пояснення умов:
- (1) Я хочу, щоб усі багатокутники були в остаточному макеті
- (2) Деякі з'єднання при необхідності можуть бути розірвані
- (3) (4) м'яч зроблений зі шкіри
Ось цільовий багатокутник
Ось набір багатокутників, які я хочу спакувати: