首页 > 代码库 > matlab练习程序(求n线段交点)
matlab练习程序(求n线段交点)
很简单的算法,这里是把每对线段都进行比较了。
还有一种似乎先通过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,:));endhold 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 endend
matlab练习程序(求n线段交点)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。