欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 文化 > JavaScript 平面坐标多边形边界线(包围盒)算法

JavaScript 平面坐标多边形边界线(包围盒)算法

2025/5/3 10:38:29 来源:https://blog.csdn.net/cg_ssh/article/details/144748918  浏览:    关键词:JavaScript 平面坐标多边形边界线(包围盒)算法

 实现:

  /*** @description: 获取多边形边界(边界框或包围盒算法)* @param {*} polygon 多边形顶点数组* @return {*} rect 顶点数组*/getBoundingRectangle(polygon) {if (!Array.isArray(polygon) || polygon.length < 3) {throw new Error('Polygon must have at least 3 points.');}// 使用 reduce 方法找到最小和最大坐标const bounds = polygon.reduce(([minX, minY, maxX, maxY], [x, y]) => [Math.min(minX, x),Math.min(minY, y),Math.max(maxX, x),Math.max(maxY, y)],[Infinity, Infinity, -Infinity, -Infinity]);// 解构赋值以获取最小和最大坐标const [minX, minY, maxX, maxY] = bounds;// 返回矩形的四个顶点坐标return [[minX, minY], // 左下角[maxX, minY], // 右下角[maxX, maxY], // 右上角[minX, maxY]  // 左上角];}

调用: 

    //多边形顶点坐标const points = [[225, 97],[185, 144],[151, 219],[142, 284],[177, 318],[188, 381],[207, 425],[239, 438],[287, 465],[315, 448],[359, 427],[375, 375],[387, 307],[376, 237],[340, 219],[325, 180],[313, 120],[290, 93],[259, 85]];//返回包围盒坐标const box = this.getBoundingRectangle(points);console.log(box)

 效果:蓝色矩形为box,粉色区域为多边形区域。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词