您的位置:首页 > Web前端 > JavaScript

js 求点到直线的距离(由2点确定的直线,求到第三点的距离,交点坐标)

2016-08-15 14:59 337 查看
直接上代码,不多说了

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 在右侧


  

  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐