用 JavaScript 检测凸多边形
凸多边形
凸多边形的定义为多边形,其所有内角都小于 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
广告
Data Structure
Networking
RDBMS
Operating System
Java
iOS
HTML
CSS
Android
Python
C Programming
C++
C#
MongoDB
MySQL
Javascript
PHP