繁体   English   中英

查找线段和凸多边形之间的交点

[英]Find intersection points between a segment and a convex polygon

我正在尝试在MATLAB中构建一个函数,在该函数中,您通过在数组上指示其顶点来输入一个 (由两个点定义)和一个多边形 (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细分中包含的积分? 谢谢。

使用线段的参数方程P = (1-t) A + t B ,其中0<=t<=1

找到多边形边缘和线段支撑线之间的交点,以t表示交点的位置(暂时忽略对t的约束)。

您会发现02相交,而不是更多,因此t 02值形成一个间隔。 该间隔与基本一维问题间隔[0,1]的交点给出解决方案。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM