matlab练习程序(多线段交点)
很简单的算法,这里是把每对线段都进行比较了。
还有一种似乎先通过x和y排序再进行交点判断的,不过那种方法我还没看太明白。
这里的方法如下:
1.根据线段的端点求两条直线的交点。
2.判断直线的交点是否在两条线段上。
结果如下:
matlab代码如下:
clear all;close all;clc; n=;
p=rand(n,); %(x1,y1,x2,y2)线段两端点 for i=:n
pbar=p(i,:);
pbar=reshape(pbar,[,]);
line(pbar(,:),pbar(,:));
end hold on;
for i=:n-
p1=p(i,:);
k1=(p1()-p1())/(p1()-p1());
b1=p1()-k1*p1();
for j=i+:n
p2=p(j,:);
k2=(p2()-p2())/(p2()-p2());
b2=p2()-k2*p2(); x=-(b1-b2)/(k1-k2); %求两直线交点
y=-(-b2*k1+b1*k2)/(k1-k2);
%判断交点是否在两线段上
if min(p1(),p1())<=x && x<=max(p1(),p1()) && ...
min(p1(),p1())<=y && y<=max(p1(),p1()) && ...
min(p2(),p2())<=x && x<=max(p2(),p2()) && ...
min(p2(),p2())<=y && y<=max(p2(),p2())
plot(x,y,'.');
end
end
end
matlab练习程序(多线段交点)的更多相关文章
- matlab练习程序(SUSAN检测)
matlab练习程序(SUSAN检测) SUSAN算子既可以检测角点也可以检测边缘,不过角点似乎比不过harris,边缘似乎比不过Canny.不过思想还是有点意思的. 主要思想就是:首先做一个和原图像 ...
- sgu 129 Inheritance 凸包,线段交点,计算几何 难度:2
129. Inheritance time limit per test: 0.25 sec. memory limit per test: 4096 KB The old King decided ...
- 谈谈"求线段交点"的几种算法(js实现,完整版)
"求线段交点"是一种非常基础的几何计算, 在很多游戏中都会被使用到. 下面我就现学现卖的把最近才学会的一些"求线段交点"的算法总结一下, 希望对大家有所帮助. ...
- hdu 2857:Mirror and Light(计算几何,点关于直线的对称点,求两线段交点坐标)
Mirror and Light Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- (转)matlab练习程序(HOG方向梯度直方图)
matlab练习程序(HOG方向梯度直方图)http://www.cnblogs.com/tiandsp/archive/2013/05/24/3097503.html HOG(Histogram o ...
- EDU 50 E. Covered Points 利用克莱姆法则计算线段交点
E. Covered Points 利用克莱姆法则计算线段交点.n^2枚举,最后把个数开方,从ans中减去. ans加上每个线段的定点数, 定点数用gcs(△x , △y)+1计算. #include ...
- matlab练习程序(多圆交点)
最近总是对计算几何方面的程序比较感兴趣. 多圆求交点,要先对圆两两求交点. 有交点的圆分为相切圆和相交圆. 相切圆求法: 1.根据两圆心求直线 2.求公共弦直线方程 3.求两直线交点即两圆切点. 相交 ...
- MATLAB—求直线或者线段之间的交点坐标
function CrossPoint( ) %% 求两条直线的交点坐标 x1 = [7.8 8]; y1 = [0.96 0.94]; %line2 x2 = [8.25 8.25]; y2 = [ ...
- matlab练习程序(简单多边形的核)
还是计算几何, 多边形的核可以这样理解:这个核为原多边形内部的一个多边形,站在这个叫核的多边形中,我们能看到原多边形的任何一个位置. 算法步骤如下: 1.根据原多边形最大和最小的x,y初始化核多边形, ...
随机推荐
- PHP 中 快捷的三元运算...
a!=null ? a: 123 当 a 不为空时,返回 123, 可简写为 a ?: 123(a 不为null 不为 '','0',0 时,返回它本身,否则返回123...)
- ui-grid样式,表格高度自适应行高,没有滚动条,去掉表头
前后端设置:
- 欧拉图 欧拉回路 欧拉通路 Euler的认识 (转)
转:https://www.cnblogs.com/Ash-ly/p/5397702.html 定义: 欧拉回路:图G的一个回路,如果恰通过图G的每一条边,则该回路称为欧拉回路,具有欧拉回路的图称为欧 ...
- HDU - 5119 DP
题意:求异或大于等于m的方案数 j枚举大了会WA..emmm #include<iostream> #include<algorithm> #include<cstdio ...
- v-for遍历对象
如果数据是这样的: userInformation:{ 'aa':{ user_name:'ddd123', icon:'', pic:'', addTime:'2018-3-21 11:21', c ...
- python查看模块版本及所在文件夹
# 以Numpy为例 第一种方法:import numpy as np np.__version__ >>> '1.12.1' np.__file__ >>> '/ ...
- The user specified as a definer ('root'@'%') does not exist解决方案
今天操作以root身份操作MySQL数据库的时候报出了这个异常: Error updating database. Cause: java.sql.SQLException: The user spe ...
- [转]NetCat简介
NetCat是一个非常简单的Unix工具,可以读.写TCP或UDP网络连接(network connection).它被设计成一个可靠的后端(back-end) 工具,能被其它的程序或脚本直接地或容易 ...
- SpringMVC 源码阅读
- 【程序员技术练级】学习一门脚本语言 python(一)文件处理
现在工作上主要用的语言是java,java在企业级的应用上能够发挥很好的用途,但有时候要做一个小功能时,比如批量更新文件,抓取网页等,这时候用java就显得太笨重了.因此就学习了python这门脚本语 ...