題目描述很簡單,給定一些點的座標,傳回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)!