当前位置:网站首页>matlab练习程序(多线段交点)
matlab练习程序(多线段交点)
2022-08-04 09:44:00 【全栈程序员站长】
大家好,又见面了,我是你们的朋友全栈君。
很简单的算法,这里是把每对线段都进行比较了。
还有一种似乎先通过x和y排序再进行交点判断的,不过那种方法我还没看太明白。
这里的方法如下:
1.根据线段的端点求两条直线的交点。
2.判断直线的交点是否在两条线段上。
结果如下:
matlab代码如下:
clear all;close all;clc;
n=20;
p=rand(n,4); %(x1,y1,x2,y2)线段两端点
for i=1:n
pbar=p(i,:);
pbar=reshape(pbar,[2,2]);
line(pbar(1,:),pbar(2,:));
end
hold on;
for i=1:n-1
p1=p(i,:);
k1=(p1(2)-p1(4))/(p1(1)-p1(3));
b1=p1(2)-k1*p1(1);
for j=i+1:n
p2=p(j,:);
k2=(p2(2)-p2(4))/(p2(1)-p2(3));
b2=p2(2)-k2*p2(1);
x=-(b1-b2)/(k1-k2); %求两直线交点
y=-(-b2*k1+b1*k2)/(k1-k2);
%判断交点是否在两线段上
if min(p1(1),p1(3))<=x && x<=max(p1(1),p1(3)) && ...
min(p1(2),p1(4))<=y && y<=max(p1(2),p1(4)) && ...
min(p2(1),p2(3))<=x && x<=max(p2(1),p2(3)) && ...
min(p2(2),p2(4))<=y && y<=max(p2(2),p2(4))
plot(x,y,'.');
end
end
end发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/107099.html原文链接:https://javaforall.cn
边栏推荐
猜你喜欢
随机推荐
【正点原子STM32连载】第二章 STM32简介 摘自【正点原子】MiniPro STM32H750 开发指南_V1.1
HTB-Nibbles
sqlilabs less-40
LeetCode 54. 螺旋矩阵 蛇形矩阵式输出字符串
The difference between Mysql application log time and system time is eight hours
Detailed explanation of telnet remote login aaa mode [Huawei eNSP]
usb设备复合g_webcam摄像头码流传输功能以及g_serial串口功能
请问下Flink SQL如何写hologres分区表?我想要每天一个分区
关于DSP驱动外挂flash
请你谈谈网站是如何进行访问的?【web领域面试题】
LeetCode581+621+207
leetcode二叉树系列(二)
【C补充】指针相关知识点收集01
No module named 'flask_misaka' has been resolved [BUG solution]
【正点原子STM32连载】第四章 STM32初体验 摘自【正点原子】MiniPro STM32H750 开发指南_V1.1
ansible部署脚本--亲测可用无坑
优炫数据库只有数据文件如何恢复
函数防抖与函数节流
去掉js代码文件所有注释
Anton Paar安东帕密度计比重计维修DMA35性能参数
![cannot import name 'import_string' from 'werkzeug' [bug solution]](/img/ee/c91ec761eb637260d92980a2838a92.png)








