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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • binlog日志记录什么内容_mysqlbinlog日志在哪

    binlog日志记录什么内容_mysqlbinlog日志在哪(一)binlog介绍binlog,即二进制日志,它记录了数据库上的所有改变,并以二进制的形式保存在磁盘中;它可以用来查看数据库的变更历史、数据库增量备份和恢复、Mysql的复制(主从数据库的复制)。(二)binlog格式binlog有三种格式:Statement、Row以及Mixed。–基于SQL语句的复制(statement-basedreplic

    2022年10月14日
    0
  • oracle 11g安装教程_暖气片安装方法图解

    oracle 11g安装教程_暖气片安装方法图解Oracle11G安装图解标签(空格分隔):oracleOracle介绍  OracleDatabase,又名OracleRDBMS,或简称Oracle是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的

    2022年9月21日
    0
  • 记数组sort方法与字符串比较引起的Bug

    记数组sort方法与字符串比较引起的Bug

    2022年3月13日
    51
  • Android内存优化之磁盘缓存

    Android内存优化之磁盘缓存

    2022年3月2日
    33
  • 修改mysql的密码_sql数据库修改密码

    修改mysql的密码_sql数据库修改密码MySQL是一个关系型数据库管理系统,在WEB应用方面MySQL是最好的RDBMS(RelationalDatabaseManagementSystem,关系数据库管理系统)应用软件之一。搭配PHP和Apache可组成良好的开发环境。因此用的很广泛。很多人都会遇到MySQL需要修改密码的情况,比如密码太简单、忘记密码等等。这里我就教大家几种修改MySQL密码的方法。这里以修改root密码为例,操作系统为windows。注意:修改MySQL是需要有mysql里的root权限的,

    2022年8月12日
    4
  • eclipse SVN插件的缓存清理[通俗易懂]

    eclipse SVN插件的缓存清理[通俗易懂]工具原料:SVN客户端;windowxp;eclipse中的缓存清理主要有: eclipse清理网页缓存; eclipse清理XSD文件缓存; eclipse清理svn账号缓存; 情况一:eclipse清理网页缓存。修改了代码多次刷新页面[已经清除过浏览器缓存]后页面调试仍显示源代码解决步骤:①停止tomcat的运行;②在eclipse中的Servers下找到并选中tomcat,右键选择”clean…”;③重新启动tomcat,刷新页面;④设置b

    2022年10月14日
    0

发表回复

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

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