//判断两条线段是否相交,线段1的两端坐标:point、point2 线段2的两端坐标:linePoint1、linePoint2
function isPointInLine(point,point2,linePoint1,linePoint2){
//判断两条线是否平行或者共线
var denominator = (point.y-point2.y)*(linePoint1.x-linePoint2.x)-(point2.x-point.x)*(linePoint2.y-linePoint1.y);
if(denominator==0)
return false;
//获取两条线延伸后的交点坐标
var x = ((point.x-point2.x)*(linePoint1.x-linePoint2.x)*(linePoint2.y-point2.y)+
(point.y-point2.y)*(linePoint1.x-linePoint2.x)*point2.x-(linePoint1.y-linePoint2.y)*(point.x-point2.x)*linePoint2.x)/denominator;
var y = -((point.y-point2.y)*(linePoint1.y-linePoint2.y)*(linePoint2.x-point2.x)+
(point.x-point2.x)*(linePoint1.y-linePoint2.y)*point2.y-(linePoint1.x-linePoint2.x)*(point.y-point2.y)*linePoint2.y)/denominator;
//判断交点是否在线段上
if((x-point2.x)*(x-point.x)<=0 && (y-point2.y)*(y-point.y)<=0 && (x-linePoint2.x)*(x-linePoint1.x)<=0 && (y-linePoint2.y)*(y-linePoint1.y)<=0)
return {x:x,y:y}
return false;
}
function isPointInPolygon(point,poly1){
var temppoly = poly1.split(",");
var poly = new Array();
for(var i = 0;i<temppoly.length/2;i++){
poly[i] = {x:temppoly[i*2],y:temppoly[i*2+1]};
}
//是否点在多边形里
var re=true;
if(poly.length>3){
var crossNum=0;
var point2 = {x:(poly[0].x-poly[1].x)/2,y:(poly[0].y-poly[1].y)/2}
for(var i=1;i<poly.length;i++){
if(i==poly.length-1){
if(isPointInLine(point,point2,poly[i],poly[0])){
crossNum++;
}
}else{
if(isPointInLine(point,point2,poly[i],poly[i+1])){
crossNum++;
}
}
}
if((crossNum % 2)==0){
re=false;
}
}
return re;
}
分享到:
相关推荐
判断通过空间的坐标点确定的选段是否相交,相交的求出交点
直线相交容易判断,但判断两条线段是否相交有些困难,本代码不但能判断是否相交,还能求出交点坐标。
编程实现了如何判断一个平面里的两条线段是否相交!
用VC6.0实现的MFC单文档程序,用鼠标在屏幕上任意画两条直线,判断两直线是否相交。
这个方法很简单,几句就可以,经过本人呕心沥血思考,终于想出这么简单的两句判断直线相交,真心了不起直线相交,真心了不起直线相交,真心了不起
自己写的 有限长度线段 对象。 提供3个方法: 1. 判断两个线段是否相交; 2. 获取相交点; 3. 获取 对象线段第一个端点 和 相交点 之间的距离;
这个算法在数学建模中非常有用.特别是当涉及图论的知识时,这个算法将非常有用.
原文地址 http://www.cnblogs.com/topcss/p/3575248.html ,基于该作者的代码基础上进行简单修改,使其在openlayers3上可用,有兴趣可以去看一下
geotools 判断几何要素的交点 当时想到用的GDAL 但是 交点函数返回的对象总是null , 改用 GeoTools 这个库,需要用到jar 到官网上下载,主要是jts-core-1.16.0.jar
能够进行快速判断两条线段是否相交,如果相交,并求出相交的交点!
源码,有测试数据。内容:1、判断两点构成的直线是否相交;2、判断点是否落在由多点构成的区域内
给定平面直角坐标系上的两条线段,判断其是否相交。 输入: 有多组测试数据。按Ctrl-C键退出程序。 每组测试数据有2行,每行4个实数,表示线段的两个端点坐标。 输出: 若相交,则输出"yes",否则输出"no"。每...
自己写的直线求交程序,fortran语言写的,希望能帮到大家
CAD 基于C#.Net 检查线自相交, VS 2010
由于项目需要,写了两个函数,IsLineSegmentCross和GetCrossPoint,对于各种情况都能很好适应,并正确的求出交点。通过了各种测试,完美的实现个算法真不容易啊! 这个是连带一个MFC测试的程序工程VC6.0源码!
本资源对应的博文地址: https://blog.csdn.net/StevenKyleLee/article/details/87934320
利用eigen库内矩阵运算函数,写了LinesPositionRelationship3D类。实现了确定三维空间任意两条直线位置关系并获得在平行和交错条件下的两直线距离的功能。该类是在确定空间两圆柱轴线关系下的副产品。
HALCON源码画两个直线,找两条线的交点,
内容索引:VB源码,其它类别,物体碰撞 VB判断窗体内的两个物体是否相交,以前有些朋友说想要物体碰撞监测,测试发现这个源码与其有点类似,它判断窗体中的两个矩形是否相交重叠在一起,点击按钮激活判断程序。
㈡ 线段及直线的基本运算 1. 点与线段的关系 3 2. 求点到线段所在直线垂线的垂足 4 3. 点到线段的最近点 4 ...15.判断两条直线是否相交及求直线交点 7 16.判断线段是否相交,如果相交返回交点 7