問題の説明は非常に簡単で、いくつかの点の座標が与えられ、それらが同じ直線上にある場合は true を返します。
たとえば、[7, 4]、これは点を表します。
onLine([[1,2], [7, 4], [22, 9]]); // returns true onLine([[1,2], [-3, -14], [22, 9]]); // returns false
このトピックを見たとき、私は最初に頭の中で平面を思い浮かべました、そして直交座標系が現れました。
中学校の数学の先生に教えてもらった方法に従って、これらの点を座標系上で一つ一つトレースしていきました。
次に、点を線分で結びます。
では、同じ直線上にあるとどうやって判断するのでしょうか?
私はすぐに坂道について考えました。
直線上の任意の2点が(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 中国語 Web サイト (www) に注目してください。 .php.cn)!