ホームページ > ウェブフロントエンド > jsチュートリアル > JavaScript の興味深い質問: 点、線、および面

JavaScript の興味深い質問: 点、線、および面

黄舟
リリース: 2017-02-13 16:19:50
オリジナル
1223 人が閲覧しました

問題の説明は非常に簡単で、いくつかの点の座標が与えられ、それらが同じ直線上にある場合は 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)!

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート