我试图将一个正方形或长方形分解成大量随机大小的正方形或长方形,这样它们就不会重叠。
好的,当然其他人也问过这个,我发现最好的话题是 How to fill a square with smaller squares/rectangles?
解决方案似乎是通过装箱或某种 TreeMap 。
但我正在寻找的是 Java、Javacript、actionscript 甚至 C 中的实际算法。
最佳答案
解决方案是尝试“分而治之”技术。在迭代 1 中,您有一个矩形。将矩形分成两个较小的矩形。下面是一种方法。假设矩形是 100x50。在 0-100(矩形的长度)之间选择一个随机数。假设随机数是 20。然后您可以将矩形分成两个较小的矩形,尺寸分别为 20x50 和 80x50。对于这 2 个新矩形,递归地应用相同的过程。(因此在迭代 2 中,您将有 4 个矩形)。这样做 n 次,你将有 2^n 个矩形。 此外,在每次迭代中,您可以随机选择是否应按每个矩形的长度(垂直)或宽度(水平)进行喷射。
希望对您有所帮助!
关于java - 将一个正方形或长方形分解成大量随机大小的正方形或长方形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7754307/