两向量的夹角_两向量垂直的夹角是多少

两向量的夹角_两向量垂直的夹角是多少计算两个向量间的夹角

大家好,又见面了,我是你们的朋友全栈君。

怎么计算两个向量间的夹角呢?

这里主要分两种情况,对于二维向量和三维向量来分别讨论。

1. 二维向量

二维向量的情况相对简单,根据向量间的点乘关系

v1v2=||v1||||v2||cosθ



可以得到:


θ=acos(v1v2/||v1||||v2||)



如果调用C/C++数学库函数acos,计算得到的结果的取值范围在

[0,π]

这里得到的夹角并不在0到360度之间(或者-180到180度),也就是说得到的结果并不能告诉我们 v1 v2 前面或者 v1 v2 后面,考虑到atan2函数可以用来计算出角度准确处于哪一个象限,可以用atan2来计算夹角。
计算从v2到v1的夹角公式:

θ=atan2(v2.y,v2.x)atan2(v1.y,v1.x)

需要注意的是:atan2的取值范围是 [π,π] ,在进行相减之后得到的夹角是在 [2π,2π] ,因此当得到的结果大于 π 时,对结果减去 2π ,当结果小于 π 时,对结果加上 2π

2. 三维向量

2.1 使用旋转轴和旋转角的方式

旋转角可以使用上面讨论的方式得到:

θ=acos(v1v2/||v1||||v2||)



旋转轴是两个向量的叉乘向量,长度是

||v1||||v2||sin(θ)


需要注意的是在acos取值在0度和180度这两个特殊值的时候,要注意一下,当两个向量夹角是0度或者180度的时候,它们是平行的关系(同向或者反向),当夹角是0度时,旋转轴可以是任意轴,因为根本就没有旋转。当夹角是180度的时候,旋转轴只要和向量呈90度夹角即可,可以有无穷多个可能的选择轴。

2.2 使用四元数的方式

使用四元数来旋转一个向量,使用下面的方式:
p2 = q * p1 * conj(q)
其中:
p2 是旋转之后的向量
p1是旋转之前的向量
q是用来旋转的四元数
在这里知道p2和p1,用来求解四元数还是相当麻烦的。因此一个比较好的思路仍然是使用上面旋转轴和旋转角的方式,不过将结论转换成四元数罢了。
关于转换的方式,可以参考我写的另外一篇文章《旋转变换(三)四元数》

参考文献:

  1. Maths – Angle between vectors
  2. Maths – Trigonometry – Inverse trig functions
  3. Maths – Issues with Relative Angles
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/125181.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • Java实现简单的递归操作[通俗易懂]

    Java实现简单的递归操作[通俗易懂]在数据结构算法设计中,或者一个方法的具体实现的时候,有一种方法叫做“递归”,这种方法在思想上并不是特别难,但是实现起来还是有一些需要注意的。虽然对于很多递归算法都可以由相应的循环迭代来代替,但是对于一些比较抽象复杂的算法不用递归很难理解与实现。递归分为直接递归和间接递归,就简单分享一下两个小的直接递归。对于递归的概念,其实你可以简单的理解为自己定义自己,记得小时候看过一部电视剧《狼毒花》,…

  • linux修改密码报错_linux修改其他用户密码

    linux修改密码报错_linux修改其他用户密码第一种:/usr/bin/passwd的权限中没有添加s即SUID特殊权限即:-rwxr-xr-x.1rootroot270008月222010/usr/bin/passwd解决方案:chmodu+s/usr/bin/passwdSUID的功能简单的说就是让组用户或其他用户在执行该文件是拥有文件所有者(own)权限,这里就是需要获取w(写)权限,这样才能将新密码写到/etc…

  • 安装drupal

    安装drupal1.把汉化文件拷贝到profiles/standard/translations/可以中文安装2.改变一个文件夹属性,cp一个文件。3.建立数据库4.开始安装,导入翻译中进度条卡死,硬盘不响了,刷新一下继续。5.设置网站名称信箱,管理员帐号信箱。6.安装开始,完毕,注意参阅install.txt文件。7.安装必须模块:Administrationmenu;a…

  • 一个简单易用的服务器性能监控工具-easynmon

    一个简单易用的服务器性能监控工具-easynmon之前监控服务器性能的时候,一直用的是nomn,但是这个工具每次使用时必须要连接服务器并输入指令,完成后还要去服务器拿出这个结果,很不方便,直到发现了这个工具-easynmon该工具部署后可直接通过网页访问,效果如下图如何使用先从网上下载这个包,之后解压,上传到服务器的某个路径下然后cd进入该存放目录,执行chmod-R777easyNmon,给该工具赋予全权限cd进入easyNmon,执行语句nohup./easyNmon-p9000&说明:900…

  • SDN:软件定义网络

    SDN:软件定义网络

  • 奇异值分解及几何意义「建议收藏」

    奇异值分解及几何意义「建议收藏」PS:一直以来对SVD分解似懂非懂,此文为译文,原文以细致的分析+大量的可视化图形演示了SVD的几何意义。能在有限的篇幅把这个问题讲解的如此清晰,实属不易。原文举了一个简单的图像处理问题,简单形象,真心希望路过的各路朋友能从不同的角度阐述下自己对SVD实际意义的理解,比如个性化推荐中应用了SVD,文本以及Web挖掘的时候也经常会用到SVD。原文:Werecommendasingular

    2022年10月28日

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号