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 代码效率的方法
Jul 03 Python
Python实现图片滑动式验证识别方法
Nov 09 Python
Flask解决跨域的问题示例代码
Feb 12 Python
python 读取txt中每行数据,并且保存到excel中的实例
Apr 29 Python
浅谈django三种缓存模式的使用及注意点
Sep 30 Python
python numpy之np.random的随机数函数使用介绍
Oct 06 Python
python安装本地whl的实例步骤
Oct 12 Python
Python 导入文件过程图解
Oct 15 Python
Python多线程:主线程等待所有子线程结束代码
Apr 25 Python
Python如何避免文件同名产生覆盖
Jun 09 Python
如何在pycharm中安装第三方包
Oct 27 Python
python 实现倒计时功能(gui界面)
Nov 11 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控制网页过期时间的代码
2008/09/28 PHP
微信JSSDK分享功能图文实例详解
2019/04/08 PHP
让JavaScript 轻松支持函数重载 (Part 1 - 设计)
2009/08/04 Javascript
用js实现的自定义的对话框的实现代码
2010/03/21 Javascript
JQuery Highcharts 动态生成图表的方法
2013/11/15 Javascript
Js实现滚动变色的文字效果
2014/06/16 Javascript
IE浏览器IFrame对象内存不释放问题解决方法
2014/08/22 Javascript
express的中间件basicAuth详解
2014/12/04 Javascript
高性能JavaScript 重排与重绘(2)
2015/08/11 Javascript
轻松学习jQuery插件EasyUI EasyUI创建CRUD应用
2015/11/30 Javascript
JavaScript获取css行间样式,内连样式和外链样式的简单方法
2016/07/18 Javascript
浅谈jquery之on()绑定事件和off()解除绑定事件
2016/10/26 Javascript
js实现年月日表单三级联动
2020/04/17 Javascript
Javarscript中模块(module)、加载(load)与捆绑(bundle)详解
2017/05/28 Javascript
原生js中ajax访问的实例详解
2017/09/19 Javascript
浅谈Angular文字折叠展开组件的原理分析
2017/11/24 Javascript
bootstrap table表格插件之服务器端分页实例代码
2018/09/12 Javascript
Bootstrap fileinput 上传新文件移除时触发服务器同步删除的配置
2018/10/08 Javascript
JS中==、===你分清楚了吗
2020/03/04 Javascript
element日历calendar组件上月、今天、下月、日历块点击事件及模板源码
2020/07/27 Javascript
[03:07]DOTA2英雄基础教程 冰霜诅咒极寒幽魂
2013/12/06 DOTA
Python的lambda匿名函数的简单介绍
2013/04/25 Python
Python实现单词翻译功能
2017/06/06 Python
django模型层(model)进行建表、查询与删除的基础教程
2017/11/21 Python
让你Python到很爽的加速递归函数的装饰器
2019/05/26 Python
html5 localStorage本地存储_动力节点Java学院整理
2017/07/06 HTML / CSS
英国领先品牌手动工具和电动工具供应商:Tooled Up
2018/11/24 全球购物
英国最受信任的在线眼镜商之一:Fashion Eyewear
2019/10/31 全球购物
adidas菲律宾官网:adidas PH
2020/02/07 全球购物
党校培训思想汇报
2013/12/30 职场文书
寄语学生的话
2014/04/10 职场文书
省级青年文明号申报材料
2014/05/23 职场文书
诚实守信演讲稿
2014/09/01 职场文书
党政领导班子四风问题对照检查材料思想汇报
2014/10/02 职场文书
webpack的移动端适配方案小结
2021/07/25 Javascript
MYSQL 表的全面总结
2021/11/11 MySQL