python如何求两个向量的夹角
Admin 2021-04-28 群英技术资讯 3811 次浏览
python如何求两个向量夹角?如下图所示我们想要求两个向量的顺时针夹角,那么我们要怎么样做呢?有什么方法?这篇文件就给大家介绍 python如何计算两向量的顺时针夹角,感兴趣的朋友就继续看吧。

以上述图片举例,要求
相对
的顺时针夹角。注意:这里使用图像坐标系
1 定义求顺时针角度的函数
import numpy as np def clockwise_angle(v1, v2): x1,y1 = v1 x2,y2 = v2 dot = x1*x2+y1*y2 det = x1*y2-y1*x2 theta = np.arctan2(det, dot) theta = theta if theta>0 else 2*np.pi+theta return theta
2 求
, 然后求夹角 
v1 = [2-0, 1-0] = [2,1] v2 = [4-0, 5-0] = [4,5] theta = clockwise_angle(v1,v2) print(theta*180/np.pi) # 24.77

补充:求2个向量顺逆时针(最小角度)旋转角度 Python
求向量 a 旋转到向量 b 的顺时针(逆时针)最小角度。正常求2个向量夹角用内积公式就可以计算,然而求得的结果不包含方向信息。如果需要方向信息的话需要引入向量的外积来帮助我们判断。

theta是两个向量的夹角,n是垂直与2维平面的方向向量,由右手定则可以判断方向。根据定义可以通过向量的坐标计算外积

这里面由于u,v是二维平面上的向量, u3 v3 都为0。 所以 u叉乘v = (u1v2 - u2v1)*K。所以等式两边的标量相等可以求夹角rho。rho 是带正负号的和旋转方向有关,但是范围在 -90 ~ 90度。可以通过rho正负号,结合向量的点乘重新计算带方向的夹角。
这里面顺时针旋转为负,逆时针旋转为正。
def GetClockAngle(v1, v2): # 2个向量模的乘积 TheNorm = np.linalg.norm(v1)*np.linalg.norm(v2) # 叉乘 rho = np.rad2deg(np.arcsin(np.cross(v1, v2)/TheNorm)) # 点乘 theta = np.rad2deg(np.arccos(np.dot(v1,v2)/TheNorm)) if rho < 0: return - theta else: return theta a = [0,1] b = [1,0] c = [-1,0] d = [0, -1] e = [-1, -1] f = [1, -1] g = [1, 1] h = [-1, 1] print(GetClockAngle(a,g), GetClockAngle(a,b), GetClockAngle(a,f), GetClockAngle(a,d), \ GetClockAngle(a,e), GetClockAngle(a,c), GetClockAngle(a,h)) ''' 结果 (-45.00000000000001, -90.0, -135.0, 180.0, 135.0, 90.0, 45.00000000000001) '''

以上就是关于python求两个向量夹角的介绍,上述代码仅供参考,希望对大家有帮助,更多python求两个向量夹角内容大家可以继续浏览其他文章。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
这篇文章主要介绍了python实现画桃心表白的代码,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
内容介绍前言一、Xpath简介二、Xpath语法规则语法规则标签定位属性定位索引定位取文本内容三、语法规则练习总结前言网上已经有很多大佬发过Xpath,而且讲的都很好,我是因为刚开始学习网络爬虫,对这
binarytree库是一个Python的第三方库,这个库实现了一些二叉树相关的常用方法,使用二叉树时,可以直接调用,不需要再自己实现,下面这篇文章主要给大家介绍了关于Python初识二叉树之实战binarytree的相关资料,需要的朋友可以参考下
这篇文章主要介绍了Python 切片为什么不会索引越界?切片(slice)是 Python 中一种很有特色的特性,在正式开始之前,我们先来从关于切片的相关知识开始介绍,感兴趣的小伙伴一起参考参考呀</P><P>
这篇文章主要为大家介绍了python的运算符与表达式,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
成为群英会员,开启智能安全云计算之旅
立即注册关注或联系群英网络
7x24小时售前:400-678-4567
7x24小时售后:0668-2555666
24小时QQ客服
群英微信公众号
CNNIC域名投诉举报处理平台
服务电话:010-58813000
服务邮箱:service@cnnic.cn
投诉与建议:0668-2555555
Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 ICP核准(ICP备案)粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008