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 执行字符串表达式函数(eval exec execfile)
Aug 11 Python
Python标准库之sqlite3使用实例
Nov 25 Python
Python中字符编码简介、方法及使用建议
Jan 08 Python
分享一个常用的Python模拟登陆类
Mar 29 Python
Django 如何获取前端发送的头文件详解(推荐)
Aug 15 Python
Django之提交表单与前后端交互的方法
Jul 19 Python
Django 自动生成api接口文档教程
Nov 19 Python
pandas中的ExcelWriter和ExcelFile的实现方法
Apr 24 Python
Keras构建神经网络踩坑(解决model.predict预测值全为0.0的问题)
Jul 07 Python
浅析Python 序列化与反序列化
Aug 05 Python
python语音识别指南终极版(有这一篇足矣)
Sep 09 Python
Django数据库迁移常见使用方法
Nov 12 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
php mysql数据库操作类(实例讲解)
2017/08/06 PHP
PHPUnit + Laravel单元测试常用技能
2019/11/06 PHP
多广告投放代码 推荐
2006/11/13 Javascript
初探jquery——表单应用范例
2007/02/20 Javascript
用jscript实现新建word文档
2007/06/15 Javascript
javascript中的document.open()方法使用介绍
2013/10/09 Javascript
NodeJS中Buffer模块详解
2015/01/07 NodeJs
jQuery插件pagination实现分页特效
2015/04/12 Javascript
jQuery插件Zclip实现完美兼容个浏览器点击复制内容到剪贴板
2015/04/30 Javascript
easyui导出excel无法弹出下载框的快速解决方法
2016/11/10 Javascript
js querySelector() 使用方法
2016/12/21 Javascript
Vue原理剖析 实现双向绑定MVVM
2017/05/03 Javascript
微信小程序实现自动定位功能
2018/10/31 Javascript
用Vue编写抽象组件的方法
2019/05/06 Javascript
浅探express路由和中间件的实现
2019/09/30 Javascript
vue.js实现左边导航切换右边内容
2019/10/21 Javascript
python 生成目录树及显示文件大小的代码
2009/07/23 Python
Python简单调用MySQL存储过程并获得返回值的方法
2015/07/20 Python
python web基础之加载静态文件实例
2018/03/20 Python
浅谈配置OpenCV3 + Python3的简易方法(macOS)
2018/04/02 Python
Python实现聊天机器人的示例代码
2018/07/09 Python
python3 pygame实现接小球游戏
2019/05/14 Python
python读写csv文件方法详细总结
2019/07/05 Python
Django框架视图函数设计示例
2019/07/29 Python
Python绘制股票移动均线的实例
2019/08/24 Python
python django生成迁移文件的实例
2019/08/31 Python
伦敦新晋轻奢耳饰潮牌:Tada & Toy
2020/05/25 全球购物
The North Face意大利官网:服装、背包和鞋子
2020/06/17 全球购物
创业计划书中要认真思考的问题
2013/12/28 职场文书
实用的简历自我评价
2014/03/06 职场文书
保护环境倡议书300字
2014/05/19 职场文书
七年级地理教学计划
2015/01/22 职场文书
民主评议党员个人总结
2015/02/13 职场文书
公司庆典主持词
2015/07/04 职场文书
2015年除四害工作总结
2015/07/23 职场文书
Go语言带缓冲的通道实现
2021/04/26 Golang