判斷三點是否共線


假如有點 A (x1,y1) 、B (x2,y2)、C (x3,y3)
計算他們的斜率 k = (y1-y2)/(x1-x2); 但是, x1如果和 x2 相等,則 k為無窮大,所以,我們代碼里面,一般用數組
k = [ y1-y2 , x1-x2 ]
令 a = y1 - y2; b = x1 - x2; 然后取絕對值,在除以他們的最大公倍數,就能夠將 k 化簡-> 最后,k 如果相等,就是共線,事實上這也是我們常提的一個概念,叫向量,下面給出模擬代碼

    function gcd(a,b){
        //計算最大公倍數
        if(b == 0){
            return a;
        }
        var r = a % b;
        return gcd(b,r);
    }
    
    
    var p1 ={x:1,y:2};
    var p2 = {x:2,y:10};
    
    var a = p1.y - p2.y;
     var b = p1.x - p2.x;
    var g = gcd(Math.abs(a),Math.abs(b));//計算最大公倍數
    a = a / g;
    b = b / g;
    var  k = [a,b]; //向量 k
    
    //最后,可以通過計算多個點的斜率(向量) k ,判斷是否共線

 


免責聲明!

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



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