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
相关推荐
nibabaoo2 分钟前
前端开发攻略---Vue 3 实现视频小窗播放(画中画)效果的完整示例
前端·javascript·vue小窗播放
lqj_本人6 分钟前
基于 openYuanrong 的生成式推荐缓存高可用方向验证实践
前端·vue.js·缓存
小温冲冲6 分钟前
C++与QML交互指南:从基础到实战
开发语言·c++·交互
不会写DN6 分钟前
Go中的泛型与any、interface有什么区别?
开发语言·后端·golang
We་ct13 分钟前
React 中的双缓存 Fiber 树机制
前端·react.js·缓存·前端框架·reactjs·fiber·缓存机制
denggun1234513 分钟前
Swift 版本历年更新记录(核心里程碑 + 关键特性)
开发语言·ios·swift
We་ct19 分钟前
React Render 与 Commit 阶段详解
前端·react.js·面试·前端框架·react·commit·render
英俊潇洒美少年20 分钟前
React Hook 钩子 useInsertionEffect、useLayoutEffect、useEffect的区别
前端·javascript·react.js
所谓伊人,在水一方33321 分钟前
【机器学习精通】第3章 | 正则化与泛化:防止过拟合的理论与实践
开发语言·人工智能·机器学习·信息可视化·系统架构
坚持学习前端日记22 分钟前
Agent AI 后端接口对接与大模型适配指南
前端·人工智能·python·ios