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中使用PIPE操作Linux管道
Feb 04 Python
用Python创建声明性迷你语言的教程
Apr 13 Python
python创建一个最简单http webserver服务器的方法
May 08 Python
numpy.delete删除一列或多列的方法
Apr 03 Python
python中将一个全部为int的list 转化为str的list方法
Apr 09 Python
python解析含有重复key的json方法
Jan 22 Python
Python实现12306火车票抢票系统
Jul 04 Python
Python 调用 Outlook 发送邮件过程解析
Aug 08 Python
kafka-python 获取topic lag值方式
Dec 23 Python
Pytorch 解决自定义子Module .cuda() tensor失败的问题
Jun 23 Python
Python基于gevent实现文件字符串查找器
Aug 11 Python
python 获取字典特定值对应的键的实现
Sep 29 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出现Cannot modify header information问题的解决方法大全
2008/04/09 PHP
PHP 程序授权验证开发思路
2009/07/09 PHP
php中通过curl smtp发送邮件
2012/06/05 PHP
php在linux下检测mysql同步状态的方法
2015/01/15 PHP
php生成固定长度纯数字编码的方法
2015/07/09 PHP
php的debug相关函数用法示例
2016/07/11 PHP
Laravel如何使用Redis共享Session
2018/02/23 PHP
Jquery练习之表单验证实现代码
2010/12/14 Javascript
js实现Select列表内容自动滚动效果代码
2015/08/20 Javascript
JS调用打印机功能简单示例
2016/11/28 Javascript
网站申请不到支付宝接口、微信接口,免接口收款实现方式几种解决办法
2016/12/14 Javascript
jQuery实现验证码功能
2017/03/17 Javascript
AngularJS双向绑定和依赖反转实例详解
2017/04/15 Javascript
Vue2.0结合webuploader实现文件分片上传功能
2018/03/09 Javascript
AngularJS 应用模块化的使用
2018/04/04 Javascript
详解vue组件开发脚手架
2018/06/15 Javascript
node.js 模块和其下载资源的镜像设置的方法
2018/09/06 Javascript
JavaScript中作用域链的概念及用途讲解
2020/08/06 Javascript
[01:29]2014DOTA2展望TI 剑指西雅图DK战队专访
2014/06/30 DOTA
[01:21]DOTA2新纪元-7.0新版本即将开启!
2016/12/11 DOTA
在Python的web框架中编写创建日志的程序的教程
2015/04/30 Python
Python提取PDF内容的方法(文本、图像、线条等)
2019/09/25 Python
解决python ThreadPoolExecutor 线程池中的异常捕获问题
2020/04/08 Python
python 获取谷歌浏览器保存的密码
2021/01/06 Python
【HTML5】Canvas绘制简单图片教程
2016/05/13 HTML / CSS
英国家电直销:Appliances Direct
2016/09/22 全球购物
俄罗斯香水在线商店:AromaCode
2019/12/04 全球购物
软件测试有哪些?什么是配置项?
2012/02/12 面试题
高中政治教学反思
2014/01/18 职场文书
2015年考研复习计划
2015/01/19 职场文书
丽江古城导游词
2015/02/03 职场文书
公务员处分决定书
2015/06/25 职场文书
电视新闻稿
2015/07/17 职场文书
2016重阳节红领巾广播稿
2015/12/18 职场文书
使用Docker容器部署rocketmq单机的全过程
2022/04/03 Servers
详解Mysql事务并发(脏读、不可重复读、幻读)
2022/04/29 MySQL