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字典键值对的添加和遍历方法
Sep 11 Python
用 Python 爬了爬自己的微信朋友(实例讲解)
Aug 25 Python
浅谈flask截获所有访问及before/after_request修饰器
Jan 18 Python
使用python将图片格式转换为ico格式的示例
Oct 22 Python
Python实现正则表达式匹配任意的邮箱方法
Dec 20 Python
Python3视频转字符动画的实例代码
Aug 29 Python
python重要函数eval多种用法解析
Jan 14 Python
django admin后管定制-显示字段的实例
Mar 11 Python
Python3创建Django项目的几种方法(3种)
Jun 03 Python
基于CentOS搭建Python Django环境过程解析
Aug 24 Python
Python页面加载的等待方式总结
Feb 28 Python
Python读取和写入Excel数据
Apr 20 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通用检测函数集合
2006/11/25 PHP
一个更简单的无限级分类菜单代码
2007/01/16 PHP
php制作中间带自己定义图片二维码的方法
2014/01/27 PHP
PHP未登录自动跳转到登录页面
2016/12/21 PHP
PHP根据树的前序遍历和中序遍历构造树并输出后序遍历的方法
2017/11/10 PHP
php实现等比例压缩图片
2018/07/26 PHP
PHP中的self关键字详解
2019/06/23 PHP
解决laravel session失效的问题
2019/10/14 PHP
一个挺有意思的Javascript小问题说明
2011/09/26 Javascript
jQuery匹配文档链接并添加class的方法
2015/06/26 Javascript
chrome浏览器如何断点调试异步加载的JS
2016/09/05 Javascript
微信小程序 支付简单实例及注意事项
2017/01/06 Javascript
js获取浏览器和屏幕的各种宽度高度
2017/02/22 Javascript
JS中Safari浏览器中的Date
2017/07/17 Javascript
JS设计模式之策略模式概念与用法分析
2018/02/05 Javascript
详解webpack打包第三方类库的正确姿势
2018/10/20 Javascript
Python爬取APP下载链接的实现方法
2016/09/30 Python
Python编程实现两个文件夹里文件的对比功能示例【包含内容的对比】
2017/06/20 Python
Python装饰器(decorator)定义与用法详解
2018/02/09 Python
Python将DataFrame的某一列作为index的方法
2018/04/08 Python
Python 做曲线拟合和求积分的方法
2018/12/29 Python
Python高斯消除矩阵
2019/01/02 Python
Python关于excel和shp的使用在matplotlib
2019/01/03 Python
python 实现屏幕录制示例
2019/12/23 Python
python3 自动打印出最新版本执行的mysql2redis实例
2020/04/09 Python
解决阿里云邮件发送不能使用25端口问题
2020/08/07 Python
详解基于canvas的视频遮罩插件
2018/01/04 HTML / CSS
沪江旗下的海量优质课程平台:沪江网校
2017/11/07 全球购物
英国在线药房和在线药剂师:Chemist 4 U
2020/01/05 全球购物
斯福泰克软件测试面试题
2015/02/16 面试题
请写出一段Python代码实现删除一个list里面的重复元素
2015/12/29 面试题
销售文员岗位职责
2013/11/29 职场文书
九一八事变演讲稿
2014/09/05 职场文书
驻村工作简报
2015/07/20 职场文书
外出听课学习心得体会
2016/01/15 职场文书
经典法律座右铭(50句)
2019/08/15 职场文书