博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MATLAB—求直线或者线段之间的交点坐标
阅读量:6670 次
发布时间:2019-06-25

本文共 1327 字,大约阅读时间需要 4 分钟。

1 function  CrossPoint(  ) 2 %% 求两条直线的交点坐标 3 x1  = [7.8 8]; 4 y1  = [0.96 0.94]; 5 %line2 6 x2 = [8.25 8.25]; 7 y2 = [0 0.99]; 8 %fit linear polynomial 9 p1 = polyfit(x1,y1,1);10 p2 = polyfit(x2,y2,1);11 %calculate intersection12 x_intersect = fzero(@(x) polyval(p1-p2,x),3);13 y_intersect = polyval(p1,x_intersect);14 line(x1,y1);15 hold on;16 line(x2,y2);17 plot(x_intersect,y_intersect,'r*')18 axis([5,10,0,2]);19 20 21 %% 求线段的交点坐标22 n=20;23 p=rand(n,4);        %(x1,y1,x2,y2)线段两端点24 25 for i=1:n26     pbar=p(i,:);27     pbar=reshape(pbar,[2,2]);28     line(pbar(1,:),pbar(2,:));29 end30 31 hold on;32 for i=1:n-133     p1=p(i,:); 34     k1=(p1(2)-p1(4))/(p1(1)-p1(3));35     b1=p1(2)-k1*p1(1);36     for j=i+1:n37         p2=p(j,:);38         k2=(p2(2)-p2(4))/(p2(1)-p2(3));39         b2=p2(2)-k2*p2(1);40        41         x=-(b1-b2)/(k1-k2);             %求两直线交点42         y=-(-b2*k1+b1*k2)/(k1-k2);43                                         %判断交点是否在两线段上44         if min(p1(1),p1(3))<=x && x<=max(p1(1),p1(3)) && ...45            min(p1(2),p1(4))<=y && y<=max(p1(2),p1(4)) && ...46            min(p2(1),p2(3))<=x && x<=max(p2(1),p2(3)) && ...47            min(p2(2),p2(4))<=y && y<=max(p2(2),p2(4))    48             plot(x,y,'r.');49         end50     end51 end52 end

 

转载于:https://www.cnblogs.com/zzw1024/p/10623482.html

你可能感兴趣的文章
Go基础系列:读取标准输入(一)
查看>>
CAD打印文字不显示怎么办
查看>>
js正则表达式全文关键字搜索并高亮
查看>>
Java代理模式
查看>>
PHP协程入门详解
查看>>
Java_Reflect_1
查看>>
HTML中的<table>标签及其子元素标签,JS中DOM对<table>的操作
查看>>
在linux中执行wget命令提示 -bash: wget: command not found 解决方法
查看>>
MobPush推送证书制作
查看>>
springmvc源码解析之配置加载ContextLoadListener
查看>>
SVN就是这么简单
查看>>
网站安全防护工作
查看>>
Java gc中能聊的那些事
查看>>
如何判断一个以太坊地址是不是合约?
查看>>
逆袭!? 期待下一个“BCH”出现
查看>>
Linux 终端下全能系统监控工具 dstat
查看>>
自动化运维工具Ansible的安装(资源)
查看>>
Oracle-如何收集统计信息
查看>>
opengl es3.0学习篇五:图元装配跟光栅化
查看>>
Linux硬盘的分区挂载与光盘的挂载(二)—fdisk分区的操作步骤
查看>>