【发布时间】:2015-03-01 12:51:00
【问题描述】:
我正在尝试在 MATLAB 中构建一个函数,您可以在其中输入一个 segment(由两个点定义)和一个 polygon(4 边),通过指示在一个数组上它的顶点。
我有以下代码:
function intersection = intersectSegmentPolygon (s, p)
% Create a vector with X coords of vertices and same for Y coords.
xv = [p(1,1) p(2,1) p(3,1) p(4,1)];
yv = [p(1,2) p(2,2) p(3,2) p(4,2)];
% Read the segment
x = [s.A(1) s.B(1)];
y = [s.A(2) s.B(2)];
[in,on] = inpolygon(x,y,xv,yv);
% Return vectors containing the coords of the intersecting points
intersection = [x(on), y(on)];
我有兴趣获取on 位置处的点(相交点),但是,显然该函数仅检查点 A 和 B(线段的初始坐标和最终坐标),我能做什么为了检查段 AB 上包含的所有点?谢谢。
【问题讨论】:
-
这个答案应该包含你需要的一切:stackoverflow.com/questions/28657143/…
-
谢谢@Daniel,但我以前见过类似的问题,但它并没有帮助我解决我的问题。我已经完成了该功能,但我只需要检查段 AB 的所有点,这是我无法做到的。
-
使用“2D 多边形边缘相交”或类似方法计算相交点。然后,对于交点之间的每一段,检查它是在多边形内部还是外部。
标签: matlab computational-geometry intersection