js判定-矩形内是否包含指定点

embedded/2024/12/22 23:30:15/

场景:使用JavaScript计算,一个由四个点(x1,y1),(x2,y2),(x3,y3),(x4,y4)逆时针顺序组成的矩形可以旋转。给定一个点(x,y),判断该点是否在矩形内。

思路:

要确定一个点(x,y)是否在由四个点组成的矩形内,可以使用称为“叉积法”。该方法包括计算矩形的点和点(x,y)形成的向量的叉积。如果所有的叉积都有相同的符号,则该点在矩形内。
下面是实现此方法的JavaScript函数:

javascript">function isPointInsideRectangle(x, y, x1, y1, x2, y2, x3, y3, x4, y4) {function crossProduct(ax, ay, bx, by) {return ax * by - ay * bx;}const d1 = crossProduct(x - x1, y - y1, x2 - x1, y2 - y1);const d2 = crossProduct(x - x2, y - y2, x3 - x2, y3 - y2);const d3 = crossProduct(x - x3, y - y3, x4 - x3, y4 - y3);const d4 = crossProduct(x - x4, y - y4, x1 - x4, y1 - y4);if ((d1 >= 0 && d2 >= 0 && d3 >= 0 && d4 >= 0) || (d1 <= 0 && d2 <= 0 && d3 <= 0 && d4 <= 0)) {return true;} else {return false;}
}// Example usage:
const x = 2;
const y = 3;
const x1 = 0, y1 = 0;
const x2 = 4, y2 = 0;
const x3 = 4, y3 = 3;
const x4 = 0, y4 = 3;console.log(isPointInsideRectangle(x, y, x1, y1, x2, y2, x3, y3, x4, y4)); // Output: true

该函数将点(x,y)的坐标和矩形(x1,y1)(x2,y2),(x3,y3),(x4,y4)四个点的坐标作为输入参数。如果点在矩形内,则返回true,否则返回false。


http://www.ppmy.cn/embedded/28599.html

相关文章

opencv_17_翻转与旋转

一、图像翻转 1&#xff09;void flip_test(Mat& image); 2&#xff09;void ColorInvert::flip_test(Mat& image) { Mat dst; //flip(image, dst, 0); //上下翻转 flip(image, dst, 1); //左右翻转 // flip(image, dst, -1); //180度翻转 imsho…

Pyspark+关联规则 Kaggle购物篮分析案例

数据集地址&#xff1a;Market Basket Analysis | Kaggle 我的NoteBook地址&#xff1a;pyspark Market Basket Analysis | Kaggle 零售商期望能够利用过去的零售数据在自己的行业中进行探索&#xff0c;并为客户提供有关商品集的建议&#xff0c;这样就能提高客户参与度、改…

自定义SpringBoot的starter

案例需求&#xff1a;自定义redis-stater。要求当导入redis坐标时&#xff0c;SpringBoot自动创建Jedis的Bean。 实现步骤&#xff1a; 1、创建redis-spring-boot-autoconfigure模块 2、创建redis-spring-boot-starter模块&#xff0c;依赖redis-spring-boot-autoconfigure的…

大语言模型在专业领域的应用——法律场景下的大语言模型

法律场景下的大语言模型 构建法律相关的大语言模型数据资源总结在法律领域,相关从业人员需要参与合同咨询、审查、案件判决等日常重复性任务。这些任务需要耗费大量的人力成本,亟需面向法律领域的人工智能技术辅助完成这些工作,从而减轻从业人员的工作负担。大语言模型具有优…

jenkins汉化不完全问题解决

jenkins安装完Localization:Chinese(Simplified)中文语言包后&#xff0c;发现是出现汉化不完全或者部分汉化的情况&#xff0c;如下图&#xff1a; 解决方法&#xff1a; 启动命令中指定语言 -Duser.languageen_US.UTF-8 或者 -Duser.languageC.UTF-8原因分析&#xff1a;安…

Android 11 bindService 流程分析

我们可以使用bindService来跨进程通信&#xff0c;其使用方法如下 Intent intent new Intent("xxx"); intent.setPackage("xxx"); boolean result bindService(intent,new ServiceConn(),BIND_AUTO_CREATE);private class ServiceConn implements Servi…

systemctl开启自动启动特定docker服务

列出所有服务和状态 systemctl list-unit-files --typeservice | grep enabled开机启动docker容器 1.创建Docker启动脚本&#xff1a; 创建一个启动Docker容器的脚本&#xff0c;该脚本可以将Docker服务启动&#xff0c;并启动需要的特定容器。名为start_docker_containers.…

什么是中间件?中间件有哪些?

什么是中间件&#xff1f; 中间件&#xff08;Middleware&#xff09;是指在客户端和服务器之间的一层软件组件&#xff0c;用于处理请求和响应的过程。 中间件是指介于两个不同系统之间的软件组件&#xff0c;它可以在两个系统之间传递、处理、转换数据&#xff0c;以达到协…