【问题标题】:Polygon Clipping: Only "viewable" area多边形剪裁:仅“可见”区域
【发布时间】:2011-11-10 20:26:00
【问题描述】:

在下图中,您可以在 (1) 中看到一个三角形和一个圆形。给定那个三角形中的一个专用点 X,我想剪掉从这个点看不到的所有东西。使用(2)中的简单多边形差异算法仅删除圆没有问题。但是我可以使用什么样的算法来获得像(3)中的多边形?

多边形总是简单的。

编辑:圆圈只是一个例子。每个简单的多边形都应该是可能的。

您可以通过查看游戏“突击队 - 敌后”的图像来了解我的需求:

【问题讨论】:

  • +1,突击队。优秀的游戏。
  • 如果你没有得到答案,你可能会提供赏金。
  • 您的问题似乎与stackoverflow.com/q/5892539/359538非常相似
  • @Angus:对我来说这似乎是一个完全不同的问题。只是一个简单的扫描线算法,检查线的交叉点。如果我错了,请纠正我。
  • @tur1ng 在您的情况下也可以进行简单的循环扫描,但效率会大大降低

标签: algorithm math polygon computational-geometry clipping


【解决方案1】:

C平行于D,G平行于A,B平行于F,D为直径。

【讨论】:

  • 对不起,我忘了说圆圈只是一个例子。每个简单的多边形都应该是可能的。
  • 不,无论如何 Simone 的回答都为任何情况提供了更好的解决方案:)
  • 对于任何凸形..如果是凹形的情况,它并不总是完美地工作......但我怀疑如果我们可以将每个凹形细分为凸形,那么问题是也可以解决凹形
  • 正确,here 是凸形的好例子。
【解决方案2】:

这是基本思想。

我假设一个更一般的问题,但它会更容易适应您的问题:给定一个包含所有形状、一个点和一组几何形状的 plan,我们想要从计划中删除从该点看不到的区域。

我们想要做的是,对于每个形状,它是starting_polarending_polar 点,即属于该形状的具有最小和最大极角的 2 个点。

现在我们将从plan 中删除形状,并删除由以下点组成的quadrilateralstarting_polarending_polar,以及两条直线之间的交点(x, starting_polar) 和@ 987654329@ 和plan 的边界。

在您的情况下,计划将只是triangle

【讨论】:

  • 听起来很有希望我会试一试。
  • 它肯定适用于凸形;但我认为,如果一个形状是凹的,你可以把它分成凸的子形状,这仍然可以为形状的所有子形状重复它
猜你喜欢
  • 2013-04-04
  • 2023-03-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-28
  • 2011-05-20
  • 2021-05-21
相关资源
最近更新 更多