绘图的线相交?
Lines Intersections by Drawing?
我正在画下图。蓝线然后红线是用 line
命令绘制的。当我画一条红线时,有没有办法知道它是否与蓝线相交?我有兴趣计算以绿色显示的坐标。
是的,你可以使用polyxpoly
,你只需要插入你的线/蓝色多边形的坐标。
如果您有 MATLAB 制图工具箱,polyxpoly 就可以了。
但是,如果您不这样做,最终的问题是从计算几何中找到(或编写您自己的代码)高效线段交互算法的实现。
为了检查几个线段,使用基于 interp1 的方法检查所有线段对就可以了,但是对于检查很多,这不是最有效的方法,因为它是 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
我正在画下图。蓝线然后红线是用 line
命令绘制的。当我画一条红线时,有没有办法知道它是否与蓝线相交?我有兴趣计算以绿色显示的坐标。
是的,你可以使用polyxpoly
,你只需要插入你的线/蓝色多边形的坐标。
如果您有 MATLAB 制图工具箱,polyxpoly 就可以了。
但是,如果您不这样做,最终的问题是从计算几何中找到(或编写您自己的代码)高效线段交互算法的实现。
为了检查几个线段,使用基于 interp1 的方法检查所有线段对就可以了,但是对于检查很多,这不是最有效的方法,因为它是 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