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 相关文章推荐
Python3实现将文件归档到zip文件及从zip文件中读取数据的方法
May 22 Python
Python实现脚本锁功能(同时只能执行一个脚本)
May 10 Python
Linux下python与C++使用dlib实现人脸检测
Jun 29 Python
浅谈python下含中文字符串正则表达式的编码问题
Dec 07 Python
python 实现返回一个列表中出现次数最多的元素方法
Jun 11 Python
在Pytorch中使用样本权重(sample_weight)的正确方法
Aug 17 Python
Python箱型图绘制与特征值获取过程解析
Oct 22 Python
基于SpringBoot构造器注入循环依赖及解决方式
Apr 26 Python
Python基于wordcloud及jieba实现中国地图词云图
Jun 09 Python
python字符串的index和find的区别详解
Jun 20 Python
Ubuntu权限不足无法创建文件夹解决方案
Nov 14 Python
利用python调用摄像头的实例分析
Jun 07 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中强制下载文件的代码(解决了IE下中文文件名乱码问题)
2011/05/09 PHP
php时间计算相关问题小结
2016/05/09 PHP
tp5.0框架隐藏index.php入口文件及模块和控制器的方法分析
2020/02/11 PHP
PHP常量DIRECTORY_SEPARATOR原理及用法解析
2020/11/10 PHP
Mozilla中显示textarea中选择的文字
2006/09/07 Javascript
学习并汇集javascript匿名函数
2010/11/25 Javascript
javascript基础知识大集锦(一) 推荐收藏
2011/01/13 Javascript
jQuery实现的图片分组切换焦点图插件
2015/01/06 Javascript
SpringMVC restful 注解之@RequestBody进行json与object转换
2015/12/10 Javascript
jQuery ajax请求返回list数据动态生成input标签,并把list数据赋值到input标签
2016/03/29 Javascript
javascript中获取元素标签中间的内容的实现方法
2016/10/08 Javascript
jQuery使用方法
2017/02/04 Javascript
完美的js图片轮换效果
2017/02/05 Javascript
利用canvas实现的加载动画效果实例代码
2017/07/05 Javascript
基于VUE.JS的移动端框架Mint UI的使用
2017/10/11 Javascript
微信小程序左滑动显示菜单功能的实现
2018/06/14 Javascript
微信小程序实现联动选择器
2019/02/15 Javascript
JS设置自定义快捷键并实现图片上下左右移动
2019/10/17 Javascript
Vue实现手机计算器
2020/08/17 Javascript
动感网页相册 python编写简单文件夹内图片浏览工具
2016/08/17 Python
基于Python 的进程管理工具supervisor使用指南
2016/09/18 Python
python负载均衡的简单实现方法
2018/02/04 Python
python暴力解压rar加密文件过程详解
2019/07/05 Python
python自动化测试之DDT数据驱动的实现代码
2019/07/23 Python
HTML5各种头部meta标签的功能(推荐)
2017/03/13 HTML / CSS
以设计师精品品质提供快速时尚:PopJulia
2018/01/09 全球购物
留学自荐信的技巧
2013/10/17 职场文书
咖啡店的创业计划书,让你hold不住
2014/01/03 职场文书
擅自离岗检讨书
2014/02/11 职场文书
分公司负责人任命书
2014/06/04 职场文书
反邪教教育心得体会
2016/01/15 职场文书
村党总支部公开承诺书2016
2016/03/25 职场文书
OpenCV中resize函数插值算法的实现过程(五种)
2021/06/05 Python
一次Mysql update sql不当引起的生产故障记录
2022/04/01 MySQL
python中的random模块和相关函数详解
2022/04/22 Python
方法汇总:Python 安装第三方库常用
2022/04/26 Python