我正在编写一个图形程序,其目标是艺术性而不是数学性。它使用几何基元(如小角度线段或弧)逐步构成图像。随着程序的进行,它寻找开放区域以填充更多细节;随着可用的开放区域变小,细节变得更加精细,因此它松散地呈分形状。
在给定的步骤中,为了决定下一步该做什么,我们想要找出:最大的圆形区域在哪里,该区域仍然没有现有的几何基元?
问题的一些限制
- 它不需要是精确的。足够接近的答案就可以。
- 不精确应该偏向保守方向:接近最大的圆是可以接受的,但不完全为空的圆是不可接受的。
- CPU效率是优先考虑的,因为它将经常被调用。
- 程序将在浏览器中运行,因此内存效率也是优先考虑的。
- 我将不得不设置一个限制,即详细级别受到内存空间的限制。
- 我们可以以任何所需的方式跟踪已绘制的基元,例如空间索引。这些的精确度不是必需的;例如,存储边界框而不是弧将是可以接受的。但是,鉴于基元数量可以随着详细级别的增加呈指数增长,因此我们希望过去详细信息的存储不会随着基元数量线性增加。
总结优先顺序
- 内存效率
- CPU效率
- 精度
P.S.
我用圆形来表达这个问题,但是如果更容易找到最大的清晰金色矩形(或椭圆形),那也可以。
P.P.S.
这张图片给出了我想要实现的一些想法。这是一个蔓延式绘图程序的开始,在其中决定了在哪里生长蔓延,以及大小,而无需考虑剩余的开放空间。但现在我们想知道,哪里有空间绘制下一个蔓延,并且大小是多少?然后在哪里?