求两条直线的交点(附MATLAB完整代码) 您所在的位置:网站首页 求两直线的交点坐标与方程X1 求两条直线的交点(附MATLAB完整代码)

求两条直线的交点(附MATLAB完整代码)

2024-07-05 23:06| 来源: 网络整理| 查看: 265

求两条直线的交点,可以使用以下方法:

设两条直线的一般方程为: 直线1: a1x + b1y + c1 = 0 直线2: a2x + b2y + c2 = 0

消元x和y,可以得到: a1x + b1y + c1 = 0 a2x + b2y + c2 = 0 => a1x + b1(−a2/b2)x - c2/b2 + c1 = 0 => x(a1 + b1(-a2/b2)) = c2/b2 - c1

解出x和y: x = (c2/b2 - c1) / (a1 + b1(-a2/b2)) 将x代入任一直线方程解出y

所以交点为: X = (c2/b2 - c1) / (a1 + b1(-a2/b2)) Y = (−b1/a1)X - c1/a1

MATLAB代码如下:

main.m主程序:

%% 求两条直线的交点 clc;clear all;close all; %% (1)设置数据 Line1Node1=[0.5,3];%直线1的第1个点[x11,y11] Line1Node2=[3,0];%直线1的第2个点[x12,y12] Line2Node1=[1,0.1];%直线2的第1个点[x21,y21] Line2Node2=[4,4];%直线2的第2个点[x22,y22] %% (2)调用计算交点的函数进行计算 [crossX,crossY]= LinesIntersection( Line1Node1,Line1Node2,Line2Node1,Line2Node2 );%调用计算交点的函数进行计算 %% (3)输出交点 crossX crossY

子函数LinesIntersection代码:

function [crossX,crossY]= LinesIntersection( Line1Node1,Line1Node2,Line2Node1,Line2Node2) %% 计算交点的函数 %% 输入数模 % Line1Node1=[0.5,3];%直线1的第1个点 % Line1Node2=[3,0];%直线1的第2个点 % Line2Node1=[1,0.1];%直线2的第1个点 % Line2Node2=[4,4];%直线2的第2个点 %% 输出数据 % crossX=交点x坐标 % crossY=交点y坐标

if Line1Node1(1)==Line1Node2(1)%% 直线1 斜率为无穷大的情况     Slope2=(Line2Node2(2)-Line2Node1(2))/(Line2Node2(1)-Line2Node1(1));     b2=Line2Node1(2)-Slope2*Line2Node1(1);     crossX=Line1Node1(1);     crossY=Slope2*crossX+b2;      elseif Line2Node1(1)==Line2Node2(1)%% 直线2斜率为无穷大的情况     Slope1=(Line1Node2(2)-Line1Node1(2))/(Line1Node2(1)-Line1Node1(1));     b1=Line1Node1(2)-Slope1*Line1Node1(1);     crossX=Line2Node1(1);     crossY=Slope1*crossX+b1;      else %% 其他情况:(Line1Node1(1)~=Line1Node2(1)) && (Line2Node1(1)~=Line2Node2(1))%     Slope1=(Line1Node2(2)-Line1Node1(2))/(Line1Node2(1)-Line1Node1(1));     Slope2=(Line2Node2(2)-Line2Node1(2))/(Line2Node2(1)-Line2Node1(1));     b1=Line1Node1(2)-Slope1*Line1Node1(1);     b2=Line2Node1(2)-Slope2*Line2Node1(1);     if Slope1==Slope2%如果平行,无交点         crossX='平行无交点';         crossY='平行无交点';     else         crossX=(b2-b1)/(Slope1-Slope2);%根据斜率和截距计算交点的x值         crossY=Slope1*crossX+b1;%根据斜率和截距计算交点的y值     end end

程序运行结果:



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有