通过绘图线交叉?

时间:2015-12-06 17:32:17

标签: matlab math graphics line intersection

我正在绘制下图。蓝色然后用line命令绘制红线。当我画一条红线时,有没有办法知道它是否与蓝线相交?我有兴趣计算绿色显示的坐标。

enter image description here

2 个答案:

答案 0 :(得分:2)

是的,您可以使用polyxpoly,只需插入线条的坐标/蓝色多边形。

答案 1 :(得分:1)

如果您有MATLAB映射工具箱, polyxpoly 将起作用。

但是,如果不这样做,最终的问题是从计算几何中找到(或编码自己的)有效线段交互算法的实现。

为了检查几个线段,使用基于interp1的方法检查所有的linesegments对,但是为了检查很多,这不是最有效的方法,因为它在N中是O(N ^ 2),段对。有些方法更有效,它们依赖于预先划分线段列表并排除相距太远的线对。对此类方法的一种讨论是:

Sweep line intersection algorithm discussion by University of Illinois

对于MATLAB实现,MATLAB文件交换中提供了一个可能解决此问题的选项:

http://www.mathworks.com/matlabcentral/fileexchange/27205-fast-line-segment-intersection