JS_根据两个点的坐标计算第一个点到第二个点的角度,A (x1, y1) 和点 B (x2, y2)计算360角度

要计算两个点的坐标,即点 A (x1, y1) 和点 B (x2, y2) 之间的角度,可以使用以下公式:

js 复制代码
angle = Math.atan2(y2 - y1, x2 - x1) * 180 / Math.PI;

其中,Math.atan2() 返回点 B 相对于点 A 的方位角,这个角度由正 x 轴逆时针旋转到点 B 与点 A 连线的角度得出。因此,Math.atan2(y2 - y1, x2 - x1) 返回的是弧度制的角度。将这个角度乘以 180/π,即 * 180 / Math.PI,就可以将其转换为角度制。

以下是一个 JavaScript 函数,它接受四个参数,分别是点 A 的 x/y 坐标和点 B 的 x/y 坐标,返回点 A 到点 B 之间的角度:

js 复制代码
function calculateAngle(x1, y1, x2, y2) {
  var angle = Math.atan2(y2 - y1, x2 - x1) * 180 / Math.PI;
  return angle;
}

例如,如果点 A 的坐标为 (4, 3),点 B 的坐标为 (1, 5),则调用该函数:

js 复制代码
var angle = calculateAngle(4, 3, 1, 5);
console.log(angle);

注意:180度以后就会为负数从-180到-0

解决办法

js 复制代码
angle < 0 ? 360 + angle : angle

最终实现

js 复制代码
function calculateAngle(x1, y1, x2, y2) {
  var angle = Math.atan2(y2 - y1, x2 - x1) * 180 / Math.PI;
  if(angle < 0) return angle < 0 ? 360 + angle : angle
  return angle;
}


console.log('res::', calculateAngle(1,1, 200, -200));	//	315
相关推荐
薛定谔的猫喵喵4 分钟前
卸载 Python 3.8 报错 “Could not set file security” 的终极解决方案
开发语言·python
Mahut12 分钟前
从零构建神经影像可视化库:neuroviz 的架构设计与实现
前端·javascript·github
慧一居士17 分钟前
VueUse 功能介绍使用场景及完整使用示例
前端·vue.js
奇怪的猫17 分钟前
浏览器窗口最小化的时候,setInterval 执行变慢,解决方案
前端·javascript
看山是山_Lau17 分钟前
代码命名规范原则与原理
c语言·开发语言
多租户观察室17 分钟前
工作流新生态:2026年工作流与Coding的重新分工
前端·人工智能·后端·低代码
cmd19 分钟前
别再混淆了!JS类型转换底层:valueOf vs toString vs Symbol.toPrimitive 详解
前端·javascript
_MyFavorite_27 分钟前
JAVA重点基础、进阶知识及易错点总结(8)List 接口(ArrayList、LinkedList、Vector)
java·开发语言·list
用户158159637437028 分钟前
AI Agent 说"完成了",但其实没有——任务验收机制的工程实践
javascript
第二层皮-合肥30 分钟前
基于C#的工业测控软件-依赖库
java·开发语言