볼록 다각형
볼록 다각형 다각형 으로 정의됩니다. 모든 내부 각도가 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