Computer >> 컴퓨터 >  >> 프로그램 작성 >> JavaScript

JavaScript에서 볼록 다각형 확인

<시간/>

볼록 다각형

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