Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 其它 > 资料存档
资料存档 资料存档
 
 
主题工具 显示模式
旧 2019-12-10, 20:30   #1
poster
高级会员
 
注册日期: 2019-11-21
帖子: 3,006
声望力: 66
poster 正向着好的方向发展
帖子 在MATLAB中找到两个向量之间的交点

我有一个非常简单的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]
poster 当前离线   回复时引用此帖
 


发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛禁用 表情符号
论坛启用 [IMG] 代码
论坛启用 HTML 代码



所有时间均为北京时间。现在的时间是 01:02


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.