볼록 다각형
볼록 다각형 다각형 으로 정의됩니다. 모든 내부 각도가 180° 미만입니다.
문제
좌표 배열을 받는 JavaScript 함수를 작성해야 합니다. 기본적으로 배열은 2차원 평면의 한 지점을 지정하는 정확히 두 개의 숫자를 포함하는 각 하위 배열의 배열 배열입니다.
우리의 함수는 이 점들에 의해 형성된 폴리곤이 볼록 폴리곤인지 여부를 결정해야 합니다. 그렇다면 함수는 true를 반환하고 그렇지 않으면 false를 반환해야 합니다.
예를 들어, 함수에 대한 입력이 -
인 경우const arr = [[0,0],[0,1],[1,1],[1,0]];
그러면 출력은 다음과 같아야 합니다. -
const output = true;
출력 설명:
이 점은 모든 정점의 내각이 90도인 완전 정사각형을 그립니다.
예시
이에 대한 코드는 -
const arr = [[0,0],[0,1],[1,1],[1,0]]; const isConvex = (arr = []) => { const { length } = arr; let pre = 0, curr = 0; for (let i = 0; i < length; ++i) { let dx1 = arr[(i + 1) % length][0] - arr[i][0]; let dx2 = arr[(i + 2) % length][0] - arr[(i + 1) % length][0]; let dy1 = arr[(i + 1) % length][1] - arr[i][1]; let dy2 = arr[(i + 2) % length][1] - arr[(i + 1) % length][1]; curr = dx1 * dy2 - dx2 * dy1; if (curr != 0) { if ((curr > 0 && pre < 0) || (curr < 0 && pre > 0)) return false; else pre = curr; }; }; return true; }; console.log(isConvex(arr));
출력
콘솔의 출력은 -
true