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使用函数默认值实现函数静态变量的方法
Aug 18 Python
使用python采集脚本之家电子书资源并自动下载到本地的实例脚本
Oct 23 Python
解决Shell执行python文件,传参空格引起的问题
Oct 30 Python
用Python解决x的n次方问题
Feb 08 Python
详解Python中pandas的安装操作说明(傻瓜版)
Apr 08 Python
django 使用全局搜索功能的实例详解
Jul 18 Python
pytorch中torch.max和Tensor.view函数用法详解
Jan 03 Python
对Tensorflow中tensorboard日志的生成与显示详解
Feb 04 Python
Python如何将函数值赋给变量
Apr 28 Python
自学python用什么系统好
Jun 23 Python
Python map及filter函数使用方法解析
Aug 06 Python
Python+logging输出到屏幕将log日志写入文件
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文件上传实例详解!!!
2007/01/02 PHP
实用函数9
2007/11/08 PHP
PHP脚本监控Nginx 502错误并自动重启php-fpm
2015/05/13 PHP
PHP基于工厂模式实现的计算器实例
2015/07/16 PHP
PHP获取当前执行php文件名的代码
2017/03/02 PHP
完美解决在ThinkPHP控制器中命名空间的问题
2017/05/05 PHP
pjblog中的UBBCode.js
2007/04/25 Javascript
AeroWindow 基于JQuery的弹出窗口插件
2011/06/27 Javascript
jquery设置控件位置的方法
2013/08/21 Javascript
jQuery设置与获取HTML,文本和值的简单实例
2014/02/26 Javascript
php析构函数的具体用法小结
2014/03/11 Javascript
JS修改地址栏参数实例代码
2016/06/14 Javascript
微信小程序 配置文件详细介绍
2016/12/14 Javascript
深入理解Javascript中的valueOf与toString
2017/01/04 Javascript
简单的渐变轮播插件
2017/01/12 Javascript
Javascript 实现匿名递归的实例代码
2017/05/25 Javascript
细说webpack源码之compile流程-入口函数run
2017/12/26 Javascript
React从react-router路由上做登陆验证控制的方法
2018/05/10 Javascript
3分钟读懂移动端rem使用方法(推荐)
2019/05/06 Javascript
JS实现网页烟花动画效果
2020/03/10 Javascript
解决vue页面渲染但dom没渲染的操作
2020/07/27 Javascript
使用PyInstaller将Python程序文件转换为可执行程序文件
2016/07/08 Python
Python自动化运维和部署项目工具Fabric使用实例
2016/09/18 Python
Python实现PS滤镜特效Marble Filter玻璃条纹扭曲效果示例
2018/01/29 Python
python操作excel的方法(xlsxwriter包的使用)
2018/06/11 Python
Django ORM多对多查询方法(自定义第三张表&amp;ManyToManyField)
2019/08/09 Python
利用Python自动化操作AutoCAD的实现
2020/04/01 Python
Python任务调度利器之APScheduler详解
2020/04/02 Python
六种酷炫Python运行进度条效果的实现代码
2020/07/17 Python
input元素的url类型和email类型简介
2012/07/11 HTML / CSS
波兰化妆品和护肤品购物网站:eKobieca
2019/08/30 全球购物
《灯光》教学反思
2014/02/08 职场文书
《珍珠泉》教学反思
2014/02/20 职场文书
《庐山的云雾》教学反思
2014/04/22 职场文书
计算机应用专业毕业生求职信
2014/06/03 职场文书
CSS3鼠标悬浮过渡缩放效果
2021/04/17 HTML / CSS