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

devtools/2024/12/28 1:06:42/

 实现:

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]  // 左上角];}

调用: 

javascript">    //多边形顶点坐标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,粉色区域为多边形区域。


http://www.ppmy.cn/devtools/145974.html

相关文章

leetCode43.字符串相乘

题目&#xff1a; 给定两个以字符串形式表示的非负整数num1和num2,返回num1和num2的乘积&#xff0c;它们的乘积也表示为字符串形式。 注意&#xff1a;不能使用任何内置的BigInteger库或直接将输入转换为整数。 示例1&#xff1a; 输入&#xff1a;num1“2”,num2“3” 输出…

【ES6复习笔记】Class类(15)

介绍 ES6 提供了更接近传统语言的写法&#xff0c;引入了 Class&#xff08;类&#xff09;这个概念&#xff0c;作为对象的模板。通过 class 关键字&#xff0c;可以定义类。基本上&#xff0c;ES6 的 class 可以看作只是一个语法糖&#xff0c;它的绝大部分功能&#xff0c;…

mysql 数据库迁移到达梦数据库

1.windows安装达梦数据库&#xff0c;去官网下载 dm8 进行安装&#xff0c;安装后&#xff0c;可以使用管理工具管理数据 使用迁移工具对数据进行迁移&#xff1b; 2.使用php 或者 thinkphp连接达梦数据库 2.1、先PHP开启DM扩展 从达梦数据库安装目录下drivers/php_pdo 复制对…

算法的学习笔记— 圆圈中最后剩下的数(牛客JZ62)

&#x1f3e0;个人主页&#xff1a;尘觉主页 文章目录 62. 圆圈中最后剩下的数题目链接题目描述解题思路Java 实现思考分析&#x1f604;总结 62. 圆圈中最后剩下的数 题目链接 NowCoder 题目描述 让小朋友们围成一个大圈。然后&#xff0c;随机指定一个数 m&#xff0c;让…

R语言数据分析案例47-上海译文出版社旗舰店图书分析和可视化

一、研究背景 随着数字化时代的发展&#xff0c;图书出版行业面临着日益激烈的市场竞争。上海译文出版社作为一家知名的出版机构&#xff0c;其旗舰店的图书销售数据蕴含着丰富的信息。对最新入库图书进行深入分析和可视化呈现&#xff0c;有助于出版社更好地了解市场动态、读…

重温设计模式--6、享元模式

文章目录 享元模式&#xff08;Flyweight Pattern&#xff09;概述享元模式的结构C 代码示例1应用场景C示例代码2 享元模式&#xff08;Flyweight Pattern&#xff09;概述 定义&#xff1a; 运用共享技术有效地支持大量细粒度的对象。 享元模式是一种结构型设计模式&#xff0…

Docker完整技术汇总

Docker 背景引入 在实际开发过程中有三个环境&#xff0c;分别是&#xff1a;开发环境、测试环境以及生产环境&#xff0c;假设开发环境中开发人员用的是jdk8&#xff0c;而在测试环境中测试人员用的时jdk7&#xff0c;这就导致程序员开发完系统后将其打成jar包发给测试人员后…

深入了解Linux —— make和makefile自动化构建工具

什么是make/makefile 在之前写代码的过程中&#xff0c;我们都是对一个文件进行编译链接&#xff08;gcc编译)&#xff0c;但是如果一个项目中&#xff0c;源代码文件非常的多&#xff0c;我们总不能一个一个的进行编译链接&#xff0c;这也太麻烦了&#xff1b;所以现在就来学…