【问题标题】:Small circle inside simple polygon简单多边形内的小圆圈
【发布时间】:2015-08-07 22:40:21
【问题描述】:

我一直在研究计算几何问题,遇到了以下问题(作为子程序需要),但未能找到任何好的参考或算法。

给定一个简单的(可能是凹的)多边形 P,目标是计算完全包含在 P(空圆)中但至少在两个位置(点或边)接触多边形的最小圆的中心和半径.如果这两个“地方”恰好是多边形的点,那么就没有约束。如果我们击中一个点和一个边缘,也没有约束。但是如果我们碰到两条边,那么它们不应该是连续的(假设顺时针或逆时针顺序)。

我的目标是一个可实现的算法,以 n^3 或更好的顺序运行。任何指针、参考或想法都会非常有帮助。

谢谢! 阿米尔

【问题讨论】:

  • 有趣。我摆弄了一段时间,但有很多情况需要考虑。即使是实用的方法(比如计算所有“明显的候选”并选择“最好的”)也很困难——这仍然是在接触到细节案例之前(例如平行边......)

标签: computational-geometry


【解决方案1】:

由于您只是在寻找建议或想法,所以我会很简短。多边形的中轴是在两个或多个位置接触边界的圆心的集合 (https://en.wikipedia.org/wiki/Topological_skeleton#Centers_of_bi-tangent_circles)。也称为骨架,中轴由线和抛物线组成的树状图组成。如果你检查这个图的顶点处的圆(忽略与多边形顶点重合的图顶点),你可以找到最大和最小的圆。您必须进行微调以适应您的“无连续边”要求。

【讨论】:

  • 嘿,大脑堵塞,我最终找到了中间轴和中间轴变换,这似乎是最好的方法,直到你开始寻找好的实现 :) 似乎我必须牺牲跑步的准确性时间(如果我的理解是正确的,算法将 2D 空间划分为小方块,其中 small 是一个参数)。我希望有一个更简单的算法,但我开始怀疑它。谢谢你的回答!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-04-01
  • 1970-01-01
  • 2021-09-19
  • 2013-04-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多