>  기사  >  웹 프론트엔드  >  흥미로운 JavaScript 질문: 점, 선, 표면

흥미로운 JavaScript 질문: 점, 선, 표면

黄舟
黄舟원래의
2017-02-13 16:19:501209검색

문제 설명은 매우 간단합니다. 일부 점의 좌표가 동일한 직선에 있으면 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으로 문의하세요.