js 求點到直線的距離(由2點確定的直線,求到第三點的距離,交點坐標)


 

直接上代碼,不多說了

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

  

 

 

 

 

 

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM