在 JavaScript 中检查凸多边形
javascriptweb developmentfront end technology
凸多边形
凸多边形定义为所有内角均小于 180° 的多边形。
问题
我们需要编写一个 JavaScript 函数,该函数接受一个坐标数组,基本上该数组将是一个数组数组,每个子数组都包含两个数字,指定二维平面上的一个点。
我们的函数应该确定这些点形成的多边形是否是凸多边形。如果是,函数应该返回 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