Computer >> Máy Tính >  >> Lập trình >> Javascript

Kiểm tra đa giác lồi trong JavaScript

Đa giác lồi

Một đa giác lồi được định nghĩa là một đa giác với tất cả các góc bên trong của nó nhỏ hơn 180 °.

Vấn đề

Chúng tôi được yêu cầu viết một hàm JavaScript nhận một mảng tọa độ, về cơ bản mảng sẽ là một mảng các mảng, mỗi mảng con chứa chính xác hai số, xác định một điểm trên mặt phẳng 2-D.

Hàm của chúng ta sẽ xác định xem đa giác được tạo thành bởi các điểm này có phải là đa giác lồi hay không. Nếu có, hàm sẽ trả về true, ngược lại là false.

Ví dụ:nếu đầu vào của hàm là -

const arr = [[0,0],[0,1],[1,1],[1,0]];

Sau đó, đầu ra phải là -

const output = true;

Giải thích đầu ra:

Các điểm này sẽ vẽ ra một hình vuông hoàn hảo trong đó tất cả các đỉnh có góc trong là 90.

Ví dụ

Mã cho điều này sẽ là -

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));

Đầu ra

Và đầu ra trong bảng điều khiển sẽ là -

true