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