Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
![]() |
#1 |
高级会员
注册日期: 2019-11-21
帖子: 3,006
声望力: 66 ![]() |
![]()
我有一个非常简单的MATLAB问题。找到两个向量之间的交点的最简单方法是什么。我不熟悉各种MATLAB函数-似乎应该为此使用一个。
例如,如果我有一个向量从(0,0)到(6,6),另一个向量从(0,6)到(6,0),我需要确定它们在(3,3)处相交。 回答: 一种解决方案是使用本教程中得出的方程式来查找二维的两条线的交点 ( 更新:由于站点不再存在,这是一个Internet归档链接)。您可以首先创建两个矩阵:一个保存线端点的x坐标,另一个保存y坐标。 x = [0 0; 6 6]; %# Starting points in first row, ending points in second row y = [0 6; 6 0]; 来自上述来源的方程式可以如下进行编码: dx = diff(x); %# Take the differences down each column dy = diff(y); den = dx(1)*dy(2)-dy(1)*dx(2); %# Precompute the denominator ua = (dx(2)*(y(1)-y(3))-dy(2)*(x(1)-x(3)))/den; ub = (dx(1)*(y(1)-y(3))-dy(1)*(x(1)-x(3)))/den; 现在,您可以计算两条线的交点: xi = x(1)+ua*dx(1); yi = y(1)+ua*dy(1); 对于问题的示例,上面的代码按预期给出xi = 3和yi = 3 。如果要检查交点是否位于线的端点之间 (即它们是有限的线段 ),则只需检查值ua和ub都在0到1之间: isInSegment = all(([ua ub] >= 0) & ([ua ub] |
![]() |
![]() |