Bagaimana cara mengemas poligon di dalam poligon lain?


20

Saya telah memesan beberapa lembar kulit dari mana saya ingin membuat bola juggling dengan menjahit ujung-ujungnya menjadi satu. Saya menggunakan padatan Platonis untuk bentuk bola.

Saya dapat memindai lembaran kulit dan menghasilkan poligon yang mendekati bentuk lembaran kulit (seperti yang Anda tahu, itu kulit binatang, dan itu tidak berbentuk persegi panjang).

Jadi sekarang, saya ingin memaksimalkan ukuran bola juggling saya.

Dalam contoh saya, poligon adalah poligon biasa, tetapi saya mencari solusi dengan poligon sederhana.

Apa faktor skala terbesar yang dapat saya terapkan pada poligon saya sehingga semuanya muat di dalam lembaran?

Saya berusaha meminimalkan limbah dengan menggunakan bahan sebanyak mungkin.

Jelas, memotong jaring polihedron menjadi poligon individu akan meningkatkan ruang kemungkinan kombinasi, tetapi juga menurunkan kualitas geometri akhir, karena ada lebih banyak penjahitan yang terlibat dan akumulasi kesalahan. Tetapi pertanyaan ini bukan tentang menyebutkan berbagai cara membuka polyhedron. Mereka dapat dianggap independen. Jadi poligon adalah poligon sederhana.

Secara formal:

Memasukkan:

  • P : poligon sederhana (target)
  • S : himpunan poligon yang ingin saya tempatkan
  • G : grafik poligon sederhana - setiap node mewakili poligon sederhana dalam , dan ada satu tepi tepi antara setiap pasangan poligon yang memiliki tepi yang sama nS
  • α>=0,β>=0 (penggunaan material dan konektivitas)

Keluaran:

  • faktor skalaf
  • H , sebuah subgrafG
  • V ( G )Loc : lokasi dan sudut untuk setiap poligon dalamV(G)
  • ukuran kualitas dari solusi:m = α . f + β . | E ( H ) |mm=α.f+β.|E(H)||E(G)|

Maksimalkan tunduk pada kondisi ini:m

  • |V(H)|=|V(G)| (1)
  • |E(H)|<=|E(G)| (2)
  • untuk setiap poligon di , diskalakan oleh faktor di lokasi di dalam (3) S S i f L o c ( S i ) PSiSSifLoc(Si)P
  • poligon dalam jangan tumpang tindih (4)V(H)

(V (G) adalah simpul dalam grafik, dan S adalah himpunan poligon, tetapi mereka menggambarkan himpunan objek yang sama. Mungkin ada cara yang lebih kompak untuk melakukan ini.)

Penjelasan kondisi:

  • (1) Saya ingin semua poligon berada di tata letak akhir
  • (2) Beberapa koneksi mungkin terputus jika perlu
  • (3) (4) bola terbuat dari kulit

Berikut adalah poligon target Lembaran kulit

Ini adalah kumpulan poligon yang ingin saya kemas: Jaring polihedron


Apakah Anda berbicara tentang poligon cembung yang ingin Anda hilangkan?
A.Schulz

Dalam kasus saya poligon teratur, karena mereka adalah wajah-wajah benda padat Platonis. Tetapi pengemasan poligon sederhana juga bisa digunakan. Mengapa Anda ingin tahu apakah poligon yang ingin saya bungkus cembung?
alecail

1
Jika poligon adalah non-cembung, Anda selalu dapat menempatkan satu poligon non-cembung di dalam poligon asli tanpa potongan. Jadi pertanyaan ini tidak masuk akal untuk poligon umum.
A.Schulz

Saya tidak tahu apakah ini penting atau tidak, tetapi apakah poligon pembatas (kulit) cembung atau dapatkah itu cekung juga?
Paresh

4
Bahkan masalah yang jauh lebih sederhana dari pengemasan jumlah kotak yang maksimal dalam sebuah kotak ternyata sulit (maaf, tidak ada tautan yang berguna, tetapi menemukan diskusi tentang ini beberapa bulan yang lalu). Hanya menyulap poligon dengan tangan, Anda mungkin tidak akan terlalu jauh dari yang optimal.
vonbrand

Jawaban:


3

Ini termasuk kelas optimasi masalah yang disebut masalah Packing . Dalam kasus Anda, alih-alih poligon biasa sebagai wadah, Anda punya yang tidak teratur, tetapi idenya tetap sama.
Masalah pengoptimalan ini biasanya NP-hard, jadi saya tidak berpikir ada cara mudah untuk mendapatkan solusi yang tepat dan mencoba semua kombinasi akan terlalu mahal.
Ada beberapa orang yang tertarik dengan masalah seperti ini; Saya telah menemukan tautan ini dari beberapa masalah pengemasan khusus yang terpecahkan: http://www2.stetson.edu/~efriedma/packing.html

Cara termudah yang saya lihat, adalah untuk menentukan perkiraan pusat dari lembaran kulit, untuk memindahkan set poligon ke sana dan, dengan meningkatkan ke atas dan ke bawah dan memeriksa apakah set poligon ada di dalam atau tidak di dalam poligon target, untuk mendapatkan semakin dekat faktor skala 'f' untuk set poligon yang Anda inginkan.

Tapi, kecuali Anda akan menggunakan faktor ini untuk produksi bola juggling skala besar, mungkin melakukannya dengan tangan akan cukup.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.