当前位置:网站首页>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
边栏推荐
- Detailed explanation of telnet remote login aaa mode [Huawei eNSP]
- TiCDC同步延迟问题处理
- 暴力破解ssh/rdp/mysql/smb服务
- Techwiz OLED:OLED器件的发光效率
- 请你谈谈网站是如何进行访问的?【web领域面试题】
- 冰蝎逆向初探
- Detailed explanation of switch link aggregation [Huawei eNSP]
- MindSpore:Ascend运行出现问题
- Layer 3 Switch/Router OSPF Configuration Details [Huawei eNSP Experiment]
- Win7C盘不能扩大怎么办?Win7C盘扩展卷不能点怎么解决
猜你喜欢
随机推荐
MindSpore:mirrorpad算子速度过慢的问题
MindSpore:【mindinsight】【Profiler】用execution_time推导出来的训练耗时远小于真实的耗时
Post-94 Byte P7 posted the salary slip: It's really good to make up for this...
How to restore the Youxuan database with only data files
bash shell数组详解
IDEA启动热部署
双重for循环案例以及while循环和do while循环案例
MySQL binlog都有哪些模式?
交换机链路聚合详解【华为eNSP】
Win11怎么进行左右键对调?
usb设备复合g_webcam摄像头码流传输功能以及g_serial串口功能
暴力破解ssh/rdp/mysql/smb服务
2022-08-03 第六小组 瞒春 学习笔记
TCP协议 - 三次握手 - 四次挥手-内核参数调优
Person.class.getInterfaces() 注意使用方法
各位大佬,请问mysql数据的cdc,能指定存量数据同步的zone为utc 吗
[Cloud Residency Co-Creation] HCSD Celebrity Live Streaming – Employment Guide
After four years of outsourcing, the autumn recruits finally landed
LeetCode中等题之旋转图像
LeetCode中等题之设计循环队列









