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标准库之循环器(itertools)介绍
Nov 25 Python
Centos5.x下升级python到python2.7版本教程
Feb 14 Python
Python CSV模块使用实例
Apr 09 Python
简单学习Python多进程Multiprocessing
Aug 29 Python
pytorch训练imagenet分类的方法
Jul 27 Python
Django利用cookie保存用户登录信息的简单实现方法
May 27 Python
django drf框架自带的路由及最简化的视图
Sep 10 Python
使用python模拟高斯分布例子
Dec 09 Python
Python ORM编程基础示例
Feb 02 Python
浅谈Python中的异常和JSON读写数据的实现
Feb 27 Python
python GUI库图形界面开发之PyQt5信号与槽的高级使用技巧(自定义信号与槽)详解与实例
Mar 06 Python
Django QuerySet查询集原理及代码实例
Jun 13 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
虹吸式咖啡壶操作
2021/03/03 冲泡冲煮
Discuz板块横排显示图片的实现方法
2007/05/28 PHP
PHP判断指定时间段的2个方法
2014/03/14 PHP
ThinkPHP中ajax使用实例教程
2014/08/22 PHP
js禁止页面使用右键(简单示例代码)
2013/11/13 Javascript
几种设置表单元素中文本输入框不可编辑的方法总结
2013/11/25 Javascript
jquery实现的网页自动播放声音
2014/04/30 Javascript
PHP 数组current和next用法分享
2015/03/05 Javascript
js实现延迟加载的方法
2015/06/24 Javascript
JavaScript定义数组的三种方法(new Array(),new Array('x','y')
2016/10/04 Javascript
Bootstrap Modal对话框如何在关闭时触发事件
2016/12/02 Javascript
jQuery+C#实现参数RSA加密传输功能【附jsencrypt.js下载】
2017/06/26 jQuery
React Native实现进度条弹框的示例代码
2017/07/17 Javascript
vue.js或js实现中文A-Z排序的方法
2018/03/08 Javascript
JS中min函数实例讲解
2019/02/18 Javascript
bootstrap-table实现表头固定以及列固定的方法示例
2019/03/07 Javascript
vue.js循环radio的实例
2019/11/07 Javascript
JS将指定的某个字符全部转换为其他字符实例代码
2020/10/13 Javascript
Javascript实现打鼓效果
2021/01/29 Javascript
[50:27]OG vs LGD 2018国际邀请赛淘汰赛BO3 第一场 8.26
2018/08/30 DOTA
python实现360的字符显示界面
2014/02/21 Python
进一步了解Python中的XML 工具
2015/04/13 Python
Python 实现域名解析为ip的方法
2019/02/14 Python
Python绘图Matplotlib之坐标轴及刻度总结
2019/06/28 Python
Python3 执行系统命令并获取实时回显功能
2019/07/09 Python
Python 异常的捕获、异常的传递与主动抛出异常操作示例
2019/09/23 Python
python GUI库图形界面开发之PyQt5切换按钮控件QPushButton详细使用方法与实例
2020/02/28 Python
HTML5网页录音和上传到服务器支持PC、Android,支持IOS微信功能
2019/04/26 HTML / CSS
美国彩妆品牌:Coastal Scents
2017/04/01 全球购物
SNIDEL官网:日本VIVI杂志人气少女第一品牌
2020/03/12 全球购物
毕业生个人的自我评价优秀范文
2013/10/03 职场文书
大学毕业登记表自我鉴定
2013/10/09 职场文书
乡镇干部个人整改措施思想汇报
2014/10/10 职场文书
西安导游词
2015/02/12 职场文书
民警忠诚教育心得体会
2016/01/23 职场文书
PySwarms(Python粒子群优化工具包)的使用:GlobalBestPSO例子解析
2021/04/05 Python