首頁  >  文章  >  web前端  >  JavaScript趣題:點、線、面

JavaScript趣題:點、線、面

黄舟
黄舟原創
2017-02-13 16:19:501219瀏覽

題目描述很簡單,給定一些點的座標,傳回true如果它們在同一條直線上。

比方說[7, 4],這代表一個點。


onLine([[1,2], [7, 4], [22, 9]]);                 // returns true
onLine([[1,2], [-3, -14], [22, 9]]);              // returns false

看到這個題目,我首先在腦海中浮現出一個平面,緊接著出現了一個直角坐標系。

我在座標系上依照中學數學老師以前教給我的方法,把這些點一個個描在座標系上。

然後把點與點間,用一條線段連接在一起。

那麼,怎麼判斷它們在同一條直線上?

我很快就想到了斜率。

若直線上任兩點為(x1,y1)(x2,y2)則直線斜率k=(y2-y1)/(x2-x1)

如果這些線段的斜率都是一樣的,那麼它們肯定在同一條直線上!

在程式中,我只要判斷線段間的斜率,不一樣就回傳false

依照上面的想法寫出程式碼:


function onLine(points) {
    var slope;
    for(var i=0;i<points.length-1;i++){
        var p1 = points[i];
        var p2 = points[i+1];
        var currentSlope = (p2[1] - p1[1]) / (p2[0] - p1[0]);
        if(slope){
            if(slope !== currentSlope){
                return false;
            }
        }
        else{
            slope = currentSlope;
        }
    }
    return true;
}


以上就是JavaScript趣題:點、線、面的內容,更多相關內容請關注PHP中文網(www.php.cn)!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn