Saya perlu metode untuk membagi ruang 3d menjadi bentuk kotak sejajar sumbu acak. Untuk saat ini saya sedang membagi ruang 2d untuk tujuan pengujian. Pendekatan paling cepat yang saya lakukan adalah mendefinisikan persegi panjang ukuran (1, 1) dan kemudian secara rekursif membagi semua persegi panjang yang ada menjadi dua persegi panjang yang tidak rata bergantian antara sumbu X dan Y.
Masalahnya di sini sudah jelas. Pendekatan ini menghasilkan garis peregangan yang panjang (ditandai dengan warna merah)
Yang saya inginkan adalah sesuatu yang terlihat lebih organik (saya sertakan contoh)
Lihat, tidak ada garis lurus panjang dari atas ke bawah atau kiri ke kanan.
Satu-satunya kendala adalah bahwa saya mungkin ingin membatasi ukuran minimal dari persegi panjang tanpa mempengaruhi granularity ukuran. yaitu jika kotak terkecil adalah 1 cm persegi dari detik ruangan terkecil tidak harus 2 unit persegi.
Jadi idealnya algoritma harus memenuhi ketiga kendala berikut:
- Persegi panjang tidak terlalu kecil.
- Ukuran rect bukan perkalian diskrit dari ukuran rect terkecil. yaitu jika kotak terkecil adalah 3 unit persegi daripada rekt yang lebih besar tidak dibatasi menjadi 6, 9, 12 dan seterusnya unit persegi dan sebaliknya bisa menjadi 3,2 atau 4,7 dalam hal ini).
- Algoritme berjalan dalam waktu polinomial (perlu menghitung cepat).