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

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

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

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

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

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
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Mybatis中传递多个参数的4种方法总结[通俗易懂]

    Mybatis中传递多个参数的4种方法总结[通俗易懂]方法1:顺序传参法#{}里面的数字代表你传入参数的顺序。这种方法不建议使用,sql层表达不直观,且一旦顺序调整容易出错。方法2:@Param注解传参法#{}里面的名称对应的是注解 @Param括号里面修饰的名称。这种方法在参数不多的情况还是比较直观的,推荐使用。方法3:Map传参法#{}里面的名称对应的是 Map里面的key名称。这种方法适合传递多个参数…

    2022年6月13日
    41
  • Intellij IDEA神器居然还有这些小技巧

    概述 真是越用越觉得它强大,它总是在我们写代码的时候,不时给我们来个小惊喜。出于对 的喜爱,我决定写一个与其相关的专栏或者系列,把一些好用的 技巧分享给大家。本文是这个系列的第一篇,主要介绍一些你可能

    2022年3月13日
    74
  • 微信小程序WebSocket实现聊天对话功能完整源码

    微信小程序WebSocket实现聊天对话功能完整源码微信小程序开发交流qq群173683895承接微信小程序开发。扫码加微信。正文:jsvarapp=getApp();varsocketOpen=false;varframeBuffer_Data,session,SocketTask;varurl=’ws://请填写您的长链接接口地址’;varupload_url=’请填写您的图片上…

    2022年6月18日
    38
  • modelsim-win64-10.4-se 破解(win7实验成功)(其他操作系统也可参考,大同小异)

    modelsim-win64-10.4-se 破解(win7实验成功)(其他操作系统也可参考,大同小异)下载好的文件如下图,包括安装文件以及破解文件:1、运行modelsim-win64-10.4-se.exe,安装软件;     注意事项:安装路径可自行设置,但不要出现汉字。本例安装路径为:D:\modeltech64_10.4\win642、将解压的破解文件(MentorKG.exe和patch_dll.bat)复制到安装目录下的win64文件夹中。3、进入安装目录下的win64 文件夹…

    2022年5月10日
    117
  • SQL SERVER插件之SQLPrompt 激活使用

    SQL SERVER插件之SQLPrompt 激活使用如有不懂,可以关注麒琳技术栈,欢迎在线咨询

    2022年7月26日
    6
  • Https加密方式

    Https加密方式Https加密介绍加密方式两者区别Https加密的选择对称加密弊端非对称加密弊端Https加密总结Https加密介绍Http直接通过明文在浏览器和服务器之间传递消息,容易被监听抓取到通信内容。Https采用对称加密和非对称加密结合的方式来进行通信。Https不是应用层的新协议,而是Http通信接口用SSL和TLS来加强加密和认证机制…

    2025年8月15日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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