【问题标题】:Circle inscribed in a rectangle矩形内接圆
【发布时间】:2016-03-07 22:19:36
【问题描述】:

我得到了很多分数,这些分数假设来自一个矩形。我需要计算矩形的边界。(这相对容易)但我还必须计算出可能在矩形中任何位置的蜡烛(圆柱体)的半径。所有这些都来自给定的点。如果有人能提出实现这一目标的方法,我将不胜感激。

在我的例子中,点是机器人在这个矩形中游荡的测量值,空心圆是机器人可以撞击的矩形内某个未知半径的极点。所以我需要弄清楚杆的半径以避免这种情况。我需要估计极点。不一定要准确。我希望机器人的测量值足以让我很好地了解极点在哪里。

【问题讨论】:

  • 找到四个边。计算到中心的距离。取最小值。
  • 找到边缘相对容易。只需遍历所有给定点就可以找到 [min x, miny, max x, max y] 并且可以非常确定边界,因为我假设给定点就足够了。我正在考虑一种有效的方法来找到矩形内的空圆圈。空圆不一定要位于矩形的中心。
  • 对于任何不是正方形的矩形,都有无数个最大尺寸的空圆。
  • 很抱歉我没有给出完整的图片。在我的例子中,这些点是机器人在这个矩形中游荡的测量值,空心圆是机器人可以撞击的矩形内某个未知半径的极点。所以我需要弄清楚杆的半径以避免这种情况。我需要估计极点。不一定要准确。我希望机器人测量值足以让我很好地了解极点在哪里。

标签: algorithm math graphics


【解决方案1】:

如果您负担得起,只需对该区域进行栅格化,标记受影响的像素,然后在它们周围开始“增长”区域直到它们相遇(这将为您提供其 Voronoi 区域的栅格版本)。到任意点距离最大的像素(在矩形内)很可能是空圆的中心。

或者,您可以进行 Delauney 三角剖分,找到矩形内最大的三角形,并在它们形成凸形时添加相邻的三角形。该形状将是圆形的近似值。

【讨论】:

  • 你能解释一下吗?我一直在尝试找出这两种方法,但无法到达任何地方。我从未在其中任何一个工作过。任何示例将不胜感激。
  • “光栅化”只是意味着您将您的点投影在常规的 2d 网格/阵列上(如在 s 屏幕上渲染)。 “不断增长的”Voronoi 区域意味着您标记某些点所占据的单元格(“像素”),然后迭代地标记尚未标记的相邻单元格(最适合保存“最后标记的”前面的队列)。为了确保您的 Voronoi 区域增长为圆形而不是正方形,在给定的步骤中,您只能检查距其“种子”点一定欧几里得距离内的邻居。至于德劳尼三角剖分,网上应该有足够的样本。
猜你喜欢
  • 1970-01-01
  • 2011-06-22
  • 1970-01-01
  • 1970-01-01
  • 2020-09-14
  • 2019-01-26
  • 1970-01-01
  • 1970-01-01
  • 2021-01-14
相关资源
最近更新 更多