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程序设计入门(1)基本语法简介
Jun 13 Python
详解Python函数作用域的LEGB顺序
May 14 Python
python实现隐马尔科夫模型HMM
Mar 25 Python
Python基于Floyd算法求解最短路径距离问题实例详解
May 16 Python
django静态文件加载的方法
May 20 Python
Python线程下使用锁的技巧分享
Sep 13 Python
Django 中间键和上下文处理器的使用
Mar 17 Python
基于python实现高速视频传输程序
May 05 Python
对Python中小整数对象池和大整数对象池的使用详解
Jul 09 Python
ML神器:sklearn的快速使用及入门
Jul 11 Python
python实现xlwt xlrd 指定条件给excel行添加颜色
Jul 14 Python
python基于机器学习预测股票交易信号
May 25 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 验证码制作(网树注释思想)
2009/07/20 PHP
Fatal error: session_start(): Failed to initialize storage module: files问题解决方法
2014/05/04 PHP
详解php 使用Callable Closure强制指定回调类型
2017/10/26 PHP
微信公众平台开发教程①获取用户Openid及个人信息图文详解
2019/04/10 PHP
js类后台管理菜单类-MenuSwitch
2007/09/12 Javascript
jQuery中filter(),not(),split()使用方法
2010/07/06 Javascript
表单切换,用回车键替换Tab健(不支持IE)
2011/07/20 Javascript
javascript权威指南 学习笔记之变量作用域分享
2011/09/28 Javascript
JavaScript高级程序设计 阅读笔记(十四) js继承机制的实现
2012/08/14 Javascript
JavaScript组合拼接字符串的效率对比测试
2014/11/06 Javascript
探析浏览器执行JavaScript脚本加载与代码执行顺序
2016/01/12 Javascript
JS获取中文拼音首字母并通过拼音首字母快速查找页面内对应中文内容的方法【附demo源码】
2016/08/19 Javascript
浅谈layer的iframe弹窗给里面的标签赋值的问题
2016/11/10 Javascript
canvas实现钟表效果
2017/02/13 Javascript
jQuery 中msgTips 顶部弹窗效果实现代码
2017/08/14 jQuery
vue axios 简单封装以及思考
2018/10/09 Javascript
ES6中的class是如何实现的(附Babel编译的ES5代码详解)
2019/05/17 Javascript
微信小程序返回上一页传参并刷新过程解析
2019/12/13 Javascript
JS apply用法总结和使用场景实例分析
2020/03/14 Javascript
工作中常用js功能汇总
2020/11/07 Javascript
Python、Javascript中的闭包比较
2015/02/04 Python
Python发送form-data请求及拼接form-data内容的方法
2016/03/05 Python
python实现滑雪游戏
2020/02/22 Python
AUC计算方法与Python实现代码
2020/02/28 Python
Python-jenkins 获取job构建信息方式
2020/05/12 Python
Python 程序员必须掌握的日志记录
2020/08/17 Python
python 爬取B站原视频的实例代码
2020/09/09 Python
python tkinter实现连连看游戏
2020/11/16 Python
Python模拟键盘输入自动登录TGP
2020/11/27 Python
Fossil德国官网:化石手表、手袋、珠宝及配件
2019/12/07 全球购物
简历的自我评价范文
2014/02/04 职场文书
会务接待方案
2014/02/27 职场文书
元旦促销方案
2014/03/15 职场文书
2015年健康教育工作总结
2015/04/10 职场文书
第一军规观后感
2015/06/12 职场文书
运动会1000米加油稿
2015/07/21 职场文书