async _calculateConvexHull(points) {
points.sort(function (a, b) {
return a[0] === b[0] ? a[1] - b[1] : a[0] - b[0];
});
var lower = [];
for (var i = 0; i < points.length; i++) {
while (
lower.length >= 2 &&
(await this._cross(
lower[lower.length - 2],
lower[lower.length - 1],
points[i]
)) <= 0
) {
lower.pop();
}
lower.push(points[i]);
}
var upper = [];
for (var i = points.length - 1; i >= 0; i--) {
while (
upper.length >= 2 &&
(await this._cross(
upper[upper.length - 2],
upper[upper.length - 1],
points[i]
)) <= 0
) {
upper.pop();
}
upper.push(points[i]);
}
upper.pop();
lower.pop();
return lower.concat(upper);
}
async _cross(o, a, b) {
return (a[0] - o[0]) * (b[1] - o[1]) - (a[1] - o[1]) * (b[0] - o[0]);
}
//使用
// 定义多个经纬度
var coordinates = [
[116.397428, 39.90923],
[116.407428, 39.91723],
[116.387428, 39.92723],
[116.417428, 39.93723],
[116.427428, 39.88723],
[116.437428, 39.94723],
[116.357428, 39.95723],
[116.367428, 39.91723]
];
var hull = calculateConvexHull(coordinates);
通过一组坐标生成外围多边形
最新推荐文章于 2024-09-13 21:00:00 发布