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
相关推荐
YimWu3 分钟前
OpenCode 核心模块梳理总结
前端·agent·ai编程
小涛不学习3 分钟前
Java List 集合深度解析(ArrayList / LinkedList 原理详解)
java·开发语言·windows
郝学胜-神的一滴5 分钟前
一序平衡,括号归真:单括号匹配算法的优雅美学
java·前端·数据结构·c++·python·算法
清水白石0086 分钟前
Python 方法绑定机制深度解析:bound method、三种方法类型与代码评审实战
开发语言·网络·python
CSDN_kada7 分钟前
杭电网安复试编程Day19
开发语言·c++·算法
MyY_DO8 分钟前
继承+代码复用使用方法说人话
java·开发语言
wangruofeng9 分钟前
ripgrep 完全指南:比 grep 快 100 倍的命令行搜索利器
前端·devops
@国境以南,太阳以西9 分钟前
从0实现OnCall基于Python语言框架
开发语言·python
恋猫de小郭11 分钟前
Flutter 鸿蒙 2026 路线发布,加速同步官方生态,进一步优化体验
前端·flutter·harmonyos
. . . . .13 分钟前
CSS三大主流方案深度解析
前端·css·tensorflow