Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Math 多边形的交并_Math_Matlab_Geometry - Fatal编程技术网

Math 多边形的交并

Math 多边形的交并,math,matlab,geometry,Math,Matlab,Geometry,我用多边形的顶点定义了多边形,我需要计算它们的并集和交集的面积。最令人不安的是,它是在映射工具箱中实现的,但我买不起它。有人知道如何制作一个快速算法来计算它吗? 谢谢你抽出时间 我想这样做: 让我们成为两个多边形的顶点集 对于多边形1中的每条边e1 对于多边形2中的每条边e2 如果e1与e2相交 将交点添加到S 删除多边形1或2内的所有顶点 生成的顶点集应构成多边形的并集 对于交点,只需删除多边形1和2之外的所有顶点(在第三步中) (您可以查找点交点和“多边形内部”-检查其他位置;-)

我用多边形的顶点定义了多边形,我需要计算它们的并集和交集的面积。最令人不安的是,它是在映射工具箱中实现的,但我买不起它。有人知道如何制作一个快速算法来计算它吗? 谢谢你抽出时间

我想这样做:

  • 让我们成为两个多边形的顶点集
  • 对于多边形1中的每条边e1
  • 对于多边形2中的每条边e2
  • 如果e1与e2相交
  • 将交点添加到S
  • 删除多边形1或2内的所有顶点
  • 生成的顶点集应构成多边形的并集

    对于交点,只需删除多边形1和2之外的所有顶点(在第三步中)

    (您可以查找点交点和“多边形内部”-检查其他位置;-)


      • 我们的想法是将每个相交边分成四个部分,并用这些部分形成一个新的多边形。当你想要联合,采取两个外边缘。如果你想要相交,就取两条内边。

        你只需要找到相交的区域;联盟的面积很容易从中获得。来自FEX的软件包可能很有用


        我找到了多边形的交点,并添加了多边形内部/外部的顶点,以执行相交/合并任务(使用“inpolygon”检查多边形1的任何顶点是否位于多边形2内部,反之亦然)。然后将所有点转换为极坐标,中心位于矩阵的平均坐标,并按角度排序,从而形成连续的闭合轮廓。了解这一点后,使用“polyarea”很容易找到交叉点/并集区域。

        函数为“polybool”。我可以用“polyarea”计算面积(我可以用它)。我认为你不应该要求用户侵犯版权。经过编辑。@Kate:你的多边形一定是凸的吗?@Verde,虽然我被你的评论逗乐了,但我认为你的反对是错误的。我认为该算法不太可能属于MathWorks而不是实现,问题是需要一个算法。我怀疑(独立)重新实施是否违反版权法或专利法取决于您的管辖权。谢谢您的回答,但我如何才能找到交叉点?有必要使用直线方程吗?在我的答案中添加了两个链接。谢谢。我懂数学,但不幸的是我不是一个很好的程序员,所以有代码是非常好的。这个FEX包计算多边形之间的交点:。你能展示一些伪代码,这样我们也可以在其他语言中实现它吗?一个很好的答案会给出一个例子。