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 sys.path详细介绍
Oct 17 Python
Python实现将sqlite数据库导出转成Excel(xls)表的方法
Jul 17 Python
python 3.0 模拟用户登录功能并实现三次错误锁定
Nov 01 Python
django上传图片并生成缩略图方法示例
Dec 11 Python
在python中利用opencv简单做图片比对的方法
Jan 24 Python
详解python中sort排序使用
Mar 23 Python
python实现函数极小值
Jul 10 Python
python+mysql实现个人论文管理系统
Oct 25 Python
python thrift 实现 单端口多服务的过程
Jun 08 Python
解决python3.6用cx_Oracle库连接Oracle的问题
Dec 07 Python
pycharm 快速解决python代码冲突的问题
Jan 15 Python
Python对excel的基本操作方法
Feb 18 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
第十一节 重载 [11]
2006/10/09 PHP
md5 16位二进制与32位字符串相互转换示例
2013/12/30 PHP
Bootstrap+PHP实现多图上传功能实例详解
2018/04/08 PHP
JavaScript对象之间的转换 jQuery对象和原声DOM
2011/03/07 Javascript
jQuery父级以及同级元素查找介绍
2013/09/04 Javascript
小议JavaScript中Generator和Iterator的使用
2015/07/29 Javascript
使用Angular和Nodejs、socket.io搭建聊天室及多人聊天室
2015/08/21 NodeJs
js使用cookie记录用户名的方法
2015/11/26 Javascript
Boostrap实现的登录界面实例代码
2016/10/09 Javascript
Vue-resource实现ajax请求和跨域请求示例
2017/02/23 Javascript
vue 封装自定义组件之tabal列表编辑单元格组件实例代码
2017/09/07 Javascript
js中bool值的转换及“&amp;&amp;”、“||”、 “!!”详解
2017/12/21 Javascript
解决vue数组中对象属性变化页面不渲染问题
2018/08/09 Javascript
Vue.js + Nuxt.js 项目中使用 Vee-validate 表单校验
2019/04/22 Javascript
javascript实现fetch请求返回的统一拦截
2019/12/22 Javascript
详解vuejs中执行npm run dev出现页面cannot GET/问题
2020/04/26 Javascript
[01:54]胎教DOTA2 准妈妈玩家现身中国区预选赛
2016/06/26 DOTA
用C++封装MySQL的API的教程
2015/05/06 Python
python实现比较两段文本不同之处的方法
2015/05/30 Python
使用Python3编写抓取网页和只抓网页图片的脚本
2015/08/20 Python
对Python中range()函数和list的比较
2018/04/19 Python
Python应用库大全总结
2018/05/30 Python
基于anaconda下强大的conda命令介绍
2018/06/11 Python
python中将\\uxxxx转换为Unicode字符串的方法
2018/09/06 Python
python 批量解压压缩文件的实例代码
2019/06/27 Python
Python实现二叉树的最小深度的两种方法
2019/09/30 Python
500行代码使用python写个微信小游戏飞机大战游戏
2019/10/16 Python
Python中if有多个条件处理方法
2020/02/26 Python
Python实现检测文件的MD5值来查找重复文件案例
2020/03/12 Python
Python中操作各种多媒体,视频、音频到图片的代码详解
2020/06/04 Python
基于python实现复制文件并重命名
2020/09/16 Python
德国传统玻璃制造商:Cristalica
2018/04/23 全球购物
日本航空官方网站:JAL
2019/06/19 全球购物
董事长助理工作职责
2014/06/08 职场文书
请病假条范文
2015/08/17 职场文书
2016年庆祝六一儿童节活动总结
2016/04/06 职场文书