相关:Is there a simple algorithm for calculating the maximum inscribed circle into a convex polygon?
我正在编写一个图形程序,其目标是艺术而非数学。它使用几何图元(例如线段或小角度的弧)逐步构成图像。因此,它寻找开放区域以填充更多细节;随着可用的开放区域越来越小,细节越来越精细,因此它的分形很松散。
在给定的步骤中,为了决定接下来要做什么,我们想要找出:哪个是最大的圆形区域仍然没有现有的几何图元?
我用圈子来表达这个问题,但如果它更容易找到最大的清晰黄金矩形(或金色椭圆),那也可以。
这张图片让我了解了我想要实现的目标。这是一个卷须绘制程序的开始,在这个程序中,关于在哪里发芽卷须以及有多大的决定没有关于剩余的开放空间。但现在我们想知道,接下来哪里有吸引卷须的空间,有多大?那之后呢?
答案 0 :(得分:2)
一种非常有效的方法是将您的区域递归划分为矩形子区域,必要时将它们分开以将占用区域与未占用区域分开。然后你只需要跟踪每次最大的未占用区域。请参阅https://en.wikipedia.org/wiki/Quadtree - 但您无需拆分为正方形。
给定任何矩形,您可以在其中绘制一条线,以使该线两侧的至少一个矩形为黄色矩形。因此,您可以递归地在矩形内竖立分区,以便除分区形成的矩形之外的所有矩形都是黄金矩形,并且剩下的添加矩形非常小。你可以这样做来创建一个类似四叉树的结构,几乎所有留下的矩形都是金色矩形。
答案 1 :(得分:1)
这似乎是一种随机算法可能有用的情况。随机选择点数,拒绝并选择更多因为某些原因它们不合适的点数,然后找到您选择的最小距离到已包含的每个数字。具有最大分钟的随机点将是您的选择。
随着数字复杂性的增加,样本点的数量可能不得不增加。
可以通过检查附近的好选择点来改进随机算法。继续检查邻居,直到不再可能改进为止。
答案 2 :(得分:1)
这是一种使用固定内存量和每次更新时间的简单方法,无论您使用多少个绘图基元。需要多少内存(以及每次更新的时间)可以根据"分辨率的高低来控制。你需要:
根据需要重复步骤2和3。
有几点: