Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Kiểm tra đa giác lồi (convex polygon) trong JavaScript


Đa giác lồi

Đa giác lồi là đa giác có tất cả góc nội nhỏ hơn 180°.

Vấn đề

Cần viết hàm JS nhận mảng tọa độ (mảng các mảng 2 số). Xác định đa giác hình thành bởi các điểm có lồi không. Trả về true/false.

Ví dụ:

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

Kết quả:

const output = true;

Giải thích:

Các điểm vẽ thành vuông, mọi đỉnh góc 90°.

Ví dụ

Mã thực hiện:

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

Kết quả

Kết quả in ra console:

true