matlab练习程序(多线段交点)

matlab练习程序(多线段交点)matlab练习程序(多线段交点)

大家好,又见面了,我是你们的朋友全栈君。

很简单的算法,这里是把每对线段都进行比较了。

还有一种似乎先通过x和y排序再进行交点判断的,不过那种方法我还没看太明白。

这里的方法如下:

1.根据线段的端点求两条直线的交点。

2.判断直线的交点是否在两条线段上。

结果如下:

matlab练习程序(多线段交点)

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.net/107099.html原文链接:https://javaforall.net

(0)
上一篇 2022年4月21日 上午10:20
下一篇 2022年4月21日 上午10:20


相关推荐

  • Ubuntu16.04安装中文输入法_Ubuntu触摸板驱动

    Ubuntu16.04安装中文输入法_Ubuntu触摸板驱动最近安装了ubuntu18.10,但是不能使用中文输入法。准备试一试搜狗输入法。但是无法安装成功。就准备使用系统自带的输入法第一步:安装自带中文输入法在设置里选择region&language选择instll/Re…

    2026年4月14日
    5
  • 大数据治理包括哪几个方面

    大数据治理包括哪几个方面在数据治理中 涉及到了前端业务系统 后端业务数据库系统再到业务终端的数据分析 从源头到终端再回到源头 形成的一个闭环负反馈系统 同样地 在数据治理中 我们也需要一套标准化的规范来指导数据的采集 传输 储存以及应用 数据治理包括数据规划 数据采集 数据储存管理 数据应用四个方面 根据每一个方面的特点 我们可以将数据治理总结为四个字 即 理 采 存 用 01 理 梳理业务流程 规划数据资源 对于企业来说 每天的实时数据都会超过 TB 级别 需要采集用户的哪些数据 这么多的数据放

    2025年6月2日
    5
  • jar包修改并重新打包,jar包反编译使用工具以及修改代码方法

    jar包修改并重新打包,jar包反编译使用工具以及修改代码方法1 首先使用反编 jd 打开 jar 包 以 solr dataimportsc 1 1 jar 为例 用这个工具打开你的 jar 包之后 选择你要修改的 class 文件打开它 进入第二步 2 Ctrl s 保存的时候这个工具就自动将 class 文件转成 java 文件了 选择你要保存的位置将 Java 文件进行保存 3 打开你的编程工具 我是 Eclipse 创建一个 java 项目 我创建了

    2026年3月17日
    3
  • Java 生成 UUID[通俗易懂]

    Java 生成 UUID[通俗易懂]1.UUID简介UUID含义是通用唯一识别码(UniversallyUniqueIdentifier),这是一个软件建构的标准。也是被开源软件基金会(OpenSoftwareFou

    2022年8月1日
    7
  • 4G与5G网络有哪些区别

    4G与5G网络有哪些区别一、帧结构比较4G和5G相同之处帧和子帧长度均为:10ms和1ms。 最小调度单位资源:RB  4G和5G不同之处1);子载波宽度4G:固定为15kHz。 5G:多种选择,15kHz、30kHz、60kHz、120kHz、240kHz,且一个5G帧中可以同时传输多种子载波带宽。  2);最小调度单位时间4G:TTI,1毫秒; 5G:slot,1/32毫秒~1毫秒,取决于子载波带宽。 此外5G新增mini-slot,最少只占用2个符号。  3);每子帧时

    2022年5月4日
    61
  • Disruptor实际应用示例

    Disruptor实际应用示例Disruptor 实际应用示例简介告警处理需求告警信息处理器调度 DisruptorApp 测试 AbstractEven 实现简介 Disruptor 它是一个开源的并发框架 并获得 2011Duke s 程序框架创新奖 能够在无锁的情况下实现 Queue 并发操作 同学们代码中是否会使用到 BlockingQueu

    2026年3月17日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号