当前位置:网站首页>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
边栏推荐
猜你喜欢
随机推荐
usb设备复合g_webcam摄像头码流传输功能以及g_serial串口功能
Detailed Explanation of Addresses Delivered by DHCP on Routing/Layer 3 Switches [Huawei eNSP]
Win11如何隐藏输入法悬浮窗?
MindSpore:图算融合报错
《福格行为模型》:如何养成好习惯?
[Cloud Residency Co-Creation] HCSD Celebrity Live Streaming – Employment Guide
leetcode单调栈经典例题——最大矩形
PD 源码分析- Checker: region 健康卫士
KubeDNS 和 CoreDNS
双指针方法
Anton Paar Anton Paar Density Meter Hydrometer Repair DMA35 Performance Parameters
Anton Paar安东帕密度计比重计维修DMA35性能参数
pyvista 的介绍与使用
HTB-Nibbles
四大网络攻击常见手段及防护
No module named 'flask_misaka' has been resolved [BUG solution]
JDBC知识点
After four years of outsourcing, the autumn recruits finally landed
ISO14443A读卡流程(作为示例参考)
sync-diff-inspector 使用实践









