c++ - 计算两个四边形交点的方法?

标签 c++ math geometry

<分区>

Possible Duplicate:
A simple algorithm for polygon intersection

我正在寻找有关如何快速计算两个任意方向的四边形(无预设角角或边长限制)的交集的大纲。我不是只是想检查它们是否相交,而是希望获得构成相交区域的点。我知道一般来说,多边形相交并不是一个小问题,并且有可用的库可以很好地完成工作。

但由于在这种特殊情况下我只关心四个边的形状,我想知道是否有一种快速方法可以使用而无需在我的应用程序中包含整个附加库。

到目前为止我想到的是:

  1. 在两个形状上相对于彼此运行“多边形中的点”
  2. 将每个多边形的每条边相互相交

上述两个步骤是否最终让我得到了构成结果相交区域的所有点?有没有更好的使用方法?

此外,如果我能得到构成结果区域的点的正确顺序,那将是很好。这不是强制性的——如果您知道任何聪明/快速的方法来做这件事(凸包?)我会很感激任何建议。

最佳答案

您没有说明这两个四边形是否是凸的;如果是,您可以使用常规凸多边形相交算法,例如 http://www.iro.umontreal.ca/~plante/compGeom/algorithm.html

据我所知,它不需要任何奇异的数据结构或操作,因此实现起来应该不难。

关于c++ - 计算两个四边形交点的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13133609/

相关文章:

python - 在 Python 中实现 Adams Bashforth Moulton 方法

algorithm - 折叠一张纸(计算机视觉)

algorithm - 如何从三个点计算角度?

c++ - QPushButton 和点击插槽

c++ - 如何在 llvm 中创建命名局部变量?

c++ - gcc 4.8 或更早版本是否存在关于正则表达式的问题?

c# - 在 C# 中编辑字符串中的字符

java - 使用 Java BigDecimal 提高准确性

javascript - 沿四边形的周边对点进行排序

postgresql - pgAdmin 4 不使用几何创建函数