直接上代码,不多说了
var p1={x:100,y:100};//直线上的点p1 var p2={x:200,y:100};//直线上的点p2 var p3={x:0,y:300};//直线外的点p3 //---------------------------------交点坐标 function getJiaoDian() { var P={}; //如果p1.x==p2.x 说明是条竖着的线 if(p1.x-p2.x==0) { P.x=p1.x; P.y=p3.y; } else { var A=(p1.y-p2.y)/(p1.x-p2.x) var B=p1.y-A*p1.x var m=p3.x+A*p3.y P.x=(m-A*B)/(A*A+1) P.y=A*P.x+B } return P } //-----------------------------------距离 function getJuLi() { var len; //如果p1.x==p2.x 说明是条竖着的线 if(p1.x-p2.x==0) { len=Math.abs(p3.x-p1.x) } else { var A=(p1.y-p2.y)/(p1.x-p2.x) var B=p1.y-A*p1.x len=Math.abs((A*p3.x+B-p3.y)/Math.sqrt(A*A+1)) } return len }
另外贴出 判断点在线的左右侧判断方法
判断点p在由p0,p1决定的直线左右侧的公式: var p0={x:?,y:?},p1={x:?,y:?},p={x:?,y:?} var key = (p0.y – p1.y) * x + (p1.x – p0.x) * y + p0.x * p1.y – p1.x * p0.y key > 0 在左侧 key = 0 在线上 key < 0 在右侧
最新评论