python 求两个向量的顺时针夹角操作


Posted in Python onMarch 04, 2021

python 求两个向量的顺时针夹角操作

以上述图片举例,要求 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 求 python 求两个向量的顺时针夹角操作 , 然后求夹角 python 求两个向量的顺时针夹角操作

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

python 求两个向量的顺时针夹角操作

补充:求2个向量顺逆时针(最小角度)旋转角度 Python

求向量 a 旋转到向量 b 的顺时针(逆时针)最小角度。

正常求2个向量夹角用内积公式就可以计算,然而求得的结果不包含方向信息。

如果需要方向信息的话需要引入向量的外积来帮助我们判断。

python 求两个向量的顺时针夹角操作

theta是两个向量的夹角,n是垂直与2维平面的方向向量,由右手定则可以判断方向。

根据定义可以通过向量的坐标计算外积

python 求两个向量的顺时针夹角操作

这里面由于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 相关文章推荐
python使用7z解压软件备份文件脚本分享
Feb 21 Python
利用Python批量提取Win10锁屏壁纸实战教程
Mar 27 Python
python3连接MySQL数据库实例详解
May 24 Python
浅谈Django中的数据库模型类-models.py(一对一的关系)
May 30 Python
使用python的pexpect模块,实现远程免密登录的示例
Feb 14 Python
python3中关于excel追加写入格式被覆盖问题(实例代码)
Jan 10 Python
Python实现结构体代码实例
Feb 10 Python
利用Python裁切tiff图像且读取tiff,shp文件的实例
Mar 10 Python
python软件都是免费的吗
Jun 18 Python
Pycharm添加虚拟解释器报错问题解决方案
Oct 13 Python
图神经网络GNN算法
May 11 Python
Python编写车票订购系统 Python实现快递收费系统
Aug 14 Python
python 制作磁力搜索工具
Mar 04 #Python
python抢购软件/插件/脚本附完整源码
Mar 04 #Python
Python 求向量的余弦值操作
Mar 04 #Python
django使用多个数据库的方法实例
Mar 04 #Python
Python使用paramiko连接远程服务器执行Shell命令的实现
Mar 04 #Python
Python 调用C++封装的进一步探索交流
Mar 04 #Python
使用Python webdriver图书馆抢座自动预约的正确方法
Mar 04 #Python
You might like
新手菜鸟必读:session与cookie的区别
2013/08/22 PHP
VB中的RasEnumConnections函数返回632错误解决方法
2014/07/29 PHP
安装ImageMagick出现error while loading shared libraries的解决方法
2014/09/23 PHP
php中file_get_contents与curl性能比较分析
2014/11/08 PHP
php为字符串前后添加指定数量字符的方法
2015/05/04 PHP
php实现的微信红包算法分析(非官方)
2015/09/25 PHP
php7性能提升的原因详解
2019/10/13 PHP
脚本安需导入(装载)的三种模式的对比
2007/06/24 Javascript
javascript 设为首页与加入收藏兼容多浏览器代码
2011/01/11 Javascript
javascript权威指南 学习笔记之null和undefined
2011/09/25 Javascript
关于JS管理作用域的问题
2013/04/10 Javascript
关于编写性能高效的javascript事件的技术
2014/11/28 Javascript
js插件YprogressBar实现漂亮的进度条效果
2015/04/20 Javascript
jquery实现美观的导航菜单鼠标提示特效代码
2015/09/06 Javascript
AngularJS数据源的多种获取方式汇总
2016/02/02 Javascript
实现一个简单的vue无限加载指令方法
2017/01/10 Javascript
浅谈JS中的常用选择器及属性、方法的调用
2017/07/28 Javascript
微信小程序实战篇之购物车的实现代码示例
2017/11/30 Javascript
原生js实现each方法实例代码详解
2019/05/27 Javascript
微信小程序实现定位及到指定位置导航的示例代码
2019/08/20 Javascript
js全屏事件fullscreenchange 实现全屏、退出全屏操作
2019/09/17 Javascript
详解 javascript对象创建模式
2020/10/30 Javascript
python模拟登陆阿里妈妈生成商品推广链接
2014/04/03 Python
Python实现的Kmeans++算法实例
2014/04/26 Python
Python实现的检测web服务器健康状况的小程序
2014/09/17 Python
使用Python脚本将Bing的每日图片作为桌面的教程
2015/05/04 Python
python创建临时文件夹的方法
2015/07/06 Python
Python开发中爬虫使用代理proxy抓取网页的方法示例
2017/09/26 Python
解决Django layui {{}}冲突的问题
2019/08/29 Python
基于python模拟bfs和dfs代码实例
2020/11/19 Python
土耳其时尚购物网站:Morhipo
2017/09/04 全球购物
最便宜促销价格订机票:Airpaz(总部设在印尼,支持中文)
2018/11/13 全球购物
大学军训感言300字
2014/03/09 职场文书
团结演讲稿范文
2014/05/23 职场文书
分析设计模式之模板方法Java实现
2021/06/23 Java/Android
关于使用Redisson订阅数问题
2022/01/18 Redis