【问题标题】:Intersection of segment with polygon线段与多边形的交点
【发布时间】:2016-11-18 16:56:52
【问题描述】:

我必须在 MATLAB 中创建一个函数来执行以下任务:

输入:

p 形式的多边形

p = [x1,y1; x2,y2; x3,y3; x4,y4...]

s 结构体,从 A 到 B 的段

s = struct('A',[x,y],'B'[u,w])

返回:

1) 一个整数,表示线段和多边形之间有多少个交叉点(例如,0,1,2)

2) 从 A 到 B 的新线段,其中 A 是输入线段的第一个交点或初始点,B 是交点的第二个点或线段输入的最后一个点。

我对如何使用 inpolygon 函数有一个想法。我一直在阅读如何使用这个函数,并且知道要使用它,我应该提供一个查询点和多边形顶点的坐标。它会根据是否在里面返回 1 或 0。

我的问题是,我怎样才能得到恰好位于边界内的段的查询点(如果段与边界相交)?

【问题讨论】:

  • polyxpoly 怎么样?另外:FEX 上有很多免费代码。
  • 感谢您的帮助。 @knedlsepp

标签: matlab computational-geometry


【解决方案1】:

如果您安装了 Mapping Toolbox,则可以使用 polyxpoly。由于这是一个相当基本的问题,因此 File Exchange 上有很多免费的 MATLAB 代码。这是我在搜索词'polygon intersect' 中找到的:

  • 2D Polygon edges intersection by Bruno Luong

    查找两个 2D 多边形边缘的交点,这是一个用于跟进新闻组讨论的简单函数

  • Curve Intersect 2 by 塞巴斯蒂安·霍尔兹

    此文件基于 Duane Hanselman 的 Curve Intersect 函数。它扩展了函数的范围以处理任意线/多边形,这些线/多边形也可能具有垂直线段或具有非增加 x 值的线段。

  • Curve intersections by NS

    虽然 FEX 中已经存在一些其他函数来计算 曲线的交点,这段代码是写的 速度是最高优先级。自始至终没有使用循环, 充分利用 MATLAB 的矢量化功能

  • Fast and Robust Curve Intersections by Douglas Schwarz

    此函数计算两条曲线相交的 (x,y) 位置。曲线可以用 NaN 打断或具有垂直线段。它也非常快(至少在代表我认为是典型应用程序的数据上)。

  • geom2d by 大卫·勒格兰

    [...] 导出新形状:两条线之间的交点、线和圆之间、平行线和垂直线

【讨论】:

  • 感谢它帮助我解决了问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-26
  • 2013-01-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-08
相关资源
最近更新 更多