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 相关文章推荐
videocapture库制作python视频高速传输程序
Dec 23 Python
Python中的匿名函数使用简介
Apr 27 Python
Windows系统下使用flup搭建Nginx和Python环境的方法
Dec 25 Python
python if not in 多条件判断代码
Sep 21 Python
Python OpenCV实现图片上输出中文
Jan 22 Python
浅述python中深浅拷贝原理
Sep 18 Python
python利用ffmpeg进行录制屏幕的方法
Jan 10 Python
scrapy-redis源码分析之发送POST请求详解
May 15 Python
解决python有时候import不了当前的包问题
Aug 28 Python
详解使用django-mama-cas快速搭建CAS服务的实现
Oct 30 Python
Python基础之列表常见操作经典实例详解
Feb 26 Python
python获取淘宝服务器时间的代码示例
Apr 22 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
PHP7.0版本备注
2015/07/23 PHP
php 解析xml 的四种方法详细介绍
2016/10/26 PHP
apache集成php7.3.5的详细步骤
2019/06/20 PHP
JavaScript 特殊字符
2007/04/05 Javascript
JavaScript入门教程(9) Document文档对象
2009/01/31 Javascript
jquery制作多功能轮播图插件
2015/04/02 Javascript
jquery获取点击控件的绝对位置简单实例
2016/10/13 Javascript
AngularJS constant和value区别详解
2017/02/28 Javascript
JS排序之快速排序详解
2017/04/08 Javascript
Nodejs中使用captchapng模块生成图片验证码
2017/05/18 NodeJs
JavaScript表单即时验证 验证不成功不能提交
2017/08/31 Javascript
微信小程序实现打开内置地图功能【附源码下载】
2017/12/07 Javascript
微信小程序数据分析之自定义分析的实现
2018/08/17 Javascript
vue  directive定义全局和局部指令及指令简写
2018/11/20 Javascript
jQuery访问json文件中数据的方法示例
2019/01/28 jQuery
vue以组件或者插件的形式实现throttle或者debounce
2019/05/22 Javascript
Vue + Elementui实现多标签页共存的方法
2019/06/12 Javascript
JavaScript实现消消乐的源代码
2021/01/12 Javascript
python利用beautifulSoup实现爬虫
2014/09/29 Python
深入理解python try异常处理机制
2016/06/01 Python
Python 实现引用其他.py文件中的类和类的方法
2018/04/29 Python
如何运行.ipynb文件的图文讲解
2019/06/27 Python
python 基于dlib库的人脸检测的实现
2019/11/08 Python
10个最常见的HTML5面试题 附答案
2016/06/06 HTML / CSS
荷兰牛仔裤网上商店:Jeans Centre
2018/04/03 全球购物
Rhone官方网站:男士运动服装、健身服装和高级运动服
2019/05/01 全球购物
判断单链表中是否存在环
2012/07/16 面试题
护士演讲稿范文
2014/01/05 职场文书
坚定理想信念心得体会
2014/03/11 职场文书
《孔繁森》教学反思
2014/04/17 职场文书
办公室文员岗位职责
2015/02/04 职场文书
2015年求职自荐信范文
2015/03/04 职场文书
教师党员个人自我评价
2015/03/04 职场文书
政府会议通知范文
2015/04/15 职场文书
HTML中table表格拆分合并(colspan、rowspan)
2021/04/07 HTML / CSS
Python开发五子棋小游戏
2022/04/28 Python