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
相关推荐
Remember_9935 小时前
【数据结构】初识 Java 集合框架:概念、价值与底层原理
java·c语言·开发语言·数据结构·c++·算法·游戏
hqwest5 小时前
码上通QT实战33--监控页面14-刻度盘旋转
开发语言·qt·qdial·qlcdnumber·modbus功能码06
源代码•宸5 小时前
Golang原理剖析(channel源码分析)
开发语言·后端·golang·select·channel·hchan·sudog
nvd115 小时前
企业级 LLM 实战:在受限环境中基于 Copilot API 构建 ReAct MCP Agent
前端·copilot
liuyunshengsir5 小时前
golang Gin 框架下的大数据量 CSV 流式下载
开发语言·golang·gin
BlockChain8885 小时前
MPC 钱包实战(三):Rust MPC Node + Java 调度层 + ETH 实际转账(可运行)
java·开发语言·rust
吉吉615 小时前
在 Windows 和 Linux 的 VSCode 中配置 PHP Debug
开发语言·php
蜜汁小强5 小时前
macOS 上升级到 python 3.12
开发语言·python·macos
Remember_9935 小时前
【数据结构】Java集合核心:线性表、List接口、ArrayList与LinkedList深度解析
java·开发语言·数据结构·算法·leetcode·list
小旭95275 小时前
【Java 面试高频考点】finally 与 return 执行顺序 解析
java·开发语言·jvm·面试·intellij-idea