【问题标题】:test algorithm to decide if point is inside area [duplicate]确定点是否在区域内的测试算法[重复]
【发布时间】:2013-11-18 05:21:14
【问题描述】:

这是一个我未能成功解决的几何问题:

  • 我们有四个点A、B、C、D定义了一个区域
  • 还有两点E,F
  • E 位于多边形 ABCD 的边界内
  • F在边界之外

我们知道每个点的(x, y)坐标。

(见下图)

确定任意点 G (x, y) 如果 GABCD 内部或外部>

有什么想法吗?

谢谢 阿德里安

【问题讨论】:

  • 这听起来像数学。
  • 另外,作为提示,这不是“凹”形的事实将是解决这个难题的关键。
  • 第一步:找到一个保证在 poligon 之外的点
  • 这个问题似乎跑题了,因为它是关于数学的。
  • 嗯,广义的问题是one of the most popular on this site。我不会说这是题外话,它只是计算几何。

标签: c++ algorithm geometry


【解决方案1】:

对于您的具体问题(四边形 - 凸面),您可以执行以下操作:
1) 计算 4 个边的方程
2) 计算一条带有 G 的垂直线与每条线的交点
3)如果你找到偶数个交叉点,那么它在外面
4)如果你找到奇数个交叉点,那么它在里面
5) 注意端点交叉点
6) 如果 G 在一侧,请小心

【讨论】:

  • 等等……在这两种情况下它都会是偶数,不是吗?如果在交叉路口内会上下发生,如果在外面是上上或下...
  • 好的,如果我们添加垂直线在两边不是无限的,你的答案就有效,而只是从 G 开始(并且上升或下降)
  • 我想你明白了。如果您需要更多帮助,请告诉我。
  • 再一个例子,我们仍然可以有零交点,那么它在外面......
  • 零交叉是偶数。
猜你喜欢
  • 1970-01-01
  • 2017-10-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-27
  • 1970-01-01
相关资源
最近更新 更多