Tôi cần một phương pháp để phân chia không gian 3d thành các hình dạng hộp được căn chỉnh theo trục ngẫu nhiên. Hiện tại tôi đang phân chia không gian 2d cho mục đích thử nghiệm. Cách tiếp cận ngay lập tức nhất mà tôi đã đưa ra là xác định một hình chữ nhật có kích thước (1, 1) và sau đó phân chia đệ quy tất cả các hình chữ nhật hiện có thành hai hình chữ nhật không đều xen kẽ giữa trục X và Y.
Vấn đề ở đây là rõ ràng. Cách tiếp cận này dẫn đến các đường kéo dài (đánh dấu màu đỏ)
Những gì tôi muốn là một cái gì đó hữu cơ hơn (tôi bao gồm một ví dụ)
Xem, không có đường thẳng dài từ trên xuống dưới hoặc trái sang phải.
Hạn chế duy nhất là tôi có thể muốn giới hạn kích thước tối thiểu của hình chữ nhật mà không ảnh hưởng đến độ chi tiết của kích thước. tức là nếu trực tràng nhỏ nhất là 1 cm vuông so với giây nhỏ nhất thì không nên là 2 đơn vị vuông.
Vì vậy, lý tưởng là thuật toán phải đáp ứng cả ba ràng buộc sau:
- Hình chữ nhật không nhỏ vô cùng.
- Kích thước Rect không nhân bội của kích thước trực tràng nhỏ nhất. tức là nếu trực tràng nhỏ nhất là 3 đơn vị vuông hơn các đơn vị lớn hơn không bị hạn chế là 6, 9, 12 và tiếp theo là các đơn vị vuông và thay vào đó có thể là 3,2 hoặc 4,7 cho vấn đề đó).
- Thuật toán chạy trong thời gian đa thức (cần tính toán nhanh).