Đ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