当前位置: 首页 > 知识库问答 >
问题:

360度角

欧阳德运
2023-03-14

我在这里编码了这个代码:

     double cosine = (v1.x*v2.x+v1.y*v2.y)/(150*150);               
     double radian = Math.acos(cosine);
     double angle = Math.toDegrees(radian);

V1和V2是两个向量,它们是保持简单的简单点()。现在我计算它们之间的角度,效果很好。但超过180度,它又回到179178度。。。但我想要360度。

问题是,例如弧度不会变为负值,所以我可以把它放在if段中。。。

谢谢你的建议。

共有2个答案

秦阳旭
2023-03-14

可以使用标量积和叉积获得全范围角度(-Pi..Pi,适用于大多数数学库):

radian = Math.atan2(v1.x*v2.y-v1.y*v2.x, v1.x*v2.x+v1.y*v2.y)
翟越
2023-03-14

你用两个向量的点积来计算它们之间的角度,但是,由于点积是可交换的,因此,没有办法得到角度的意义,只有它的大小(正如你所发现的)acos在180度以上是模糊的。

试着使用atan2。它应该是这样的:

double theta1 = Math.atan2(v1.y, v1.x);
double theta2 = Math.atan2(v2.y, v2.x);
double theta = theta1 - theta2;

请注意,atan2总是在-pi中返回答案。。。圆周率,所以你必须加上圆周率,使其在0范围内。。。2.0*pi。

 类似资料:
  • 同行, 我认为我修改过的问题仍然没有答案。请求取消标记为重复项。

  • 8,9月找工作兵荒马乱,最终因为保研放弃了继续找工作,这几天还在陆陆续续收到京东和百度的面试,各种笔试邮件。 今天突然接到蚂蚁的二面电话,还是很有感触的,将之前的面经找出来 还是希望大家不论工作还是读研,都能有一个好的未来 京东初试8.30 数据库:写一个简单的select C++:深拷贝和浅拷贝 操作系统:进程和线程 测试:设计登陆页面的测试用例 代码:用O(n)写一个数组的第K大数 根据二叉树

  • 本文向大家介绍基于Three.js实现360度全景图片,包括了基于Three.js实现360度全景图片的使用技巧和注意事项,需要的朋友参考一下 Three.js 是一款运行在浏览器中的3D引擎, 处理三维效果。在一些相机的官网首页中,经常有一张图在旋转,图上面悬浮着文字。这种效果是如何做出来的呢?先看效果,再讲解。 1).建立一个java web 工程(或者其他工程), 因为three.js 的全

  • 360-FAAR (Firewall Analysis, Audit, and Repair) 防火墙分析、审计和修复,是一个离线的周期性的安全基础设施管理工具, It can read Checkpoint FW1 (in odumper format) configurations and Netscreen ScreenOS policies and compare them to loge

  • Surround 360 是 Facebook 开源的高质量 360 度视频捕获系统的软硬件。该项目包含硬件摄像头的设计和软件驱动代码,实现一个系统内的端到端的三维 360 度视频捕获。 依赖软件: CMake gflags glog OpenCV 3.0+ ffmpeg Gooey wx 摄像头的设计很像飞碟:

  • C++服务器开发 广告部 从windows系统的输入框输入一个数字,操作系统层面是怎么处理的 Linux系统,将1KB的字符串写到文件(磁盘)中,操作系统是怎么处理的 缓冲区在什么条件下会将数据刷新到磁盘中,Linux的磁盘刷新时间是多少 自旋锁和互斥锁的区别,自旋锁占用CPU多少时钟周期呢 grep命令,1. 输出不包含某个词的全部文本;2. 输出不包含某个词的全部文本的前后5行 电脑有1GB内