Python 计算任意两向量之间的夹角方法


Posted in Python onJuly 05, 2019

如图所示,我们要计算任意两个向量之间的夹角。

(图中的坐标数字是估计值,随手给定)

Python 计算任意两向量之间的夹角方法

python代码如下

import math 

AB = [1,-3,5,-1]
CD = [4,1,4.5,4.5]
EF = [2,5,-2,6]
PQ = [-3,-4,1,-6]

def angle(v1, v2):
  dx1 = v1[2] - v1[0]
  dy1 = v1[3] - v1[1]
  dx2 = v2[2] - v2[0]
  dy2 = v2[3] - v2[1]
  angle1 = math.atan2(dy1, dx1)
  angle1 = int(angle1 * 180/math.pi)
  # print(angle1)
  angle2 = math.atan2(dy2, dx2)
  angle2 = int(angle2 * 180/math.pi)
  # print(angle2)
  if angle1*angle2 >= 0:
    included_angle = abs(angle1-angle2)
  else:
    included_angle = abs(angle1) + abs(angle2)
    if included_angle > 180:
      included_angle = 360 - included_angle
  return included_angle

ang1 = angle(AB, CD)
print("AB和CD的夹角")
print(ang1)
ang2 = angle(AB, EF)
print("AB和EF的夹角")
print(ang2)
ang3 = angle(AB, PQ)
print("AB和PQ的夹角")
print(ang3)
ang4 = angle(CD, EF)
print("CD和EF的夹角")
print(ang4)
ang5 = angle(CD, PQ)
print("CD和PQ的夹角")
print(ang5)
ang6 = angle(EF, PQ)
print("EF和PQ的夹角")
print(ang6)

结果为

AB和CD的夹角
55
AB和EF的夹角
139
AB和PQ的夹角
52
CD和EF的夹角
84
CD和PQ的夹角
107
EF和PQ的夹角
169

以上这篇Python 计算任意两向量之间的夹角方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python 字典(Dictionary)操作详解
Mar 11 Python
Python获取CPU、内存使用率以及网络使用状态代码
Feb 08 Python
Python最小二乘法矩阵
Jan 02 Python
pandas去重复行并分类汇总的实现方法
Jan 29 Python
python三引号输出方法
Feb 27 Python
线程安全及Python中的GIL原理分析
Oct 29 Python
pygame库实现移动底座弹球小游戏
Apr 14 Python
在keras中获取某一层上的feature map实例
Jan 24 Python
Numpy一维线性插值函数的用法
Apr 22 Python
python实现人工蜂群算法
Sep 18 Python
详解vscode实现远程linux服务器上Python开发
Nov 10 Python
详解用selenium来下载小姐姐图片并保存
Jan 26 Python
python实现两个经纬度点之间的距离和方位角的方法
Jul 05 #Python
Python3+Appium实现多台移动设备操作的方法
Jul 05 #Python
Python PIL读取的图像发生自动旋转的实现方法
Jul 05 #Python
python读出当前时间精度到秒的代码
Jul 05 #Python
python读写csv文件方法详细总结
Jul 05 #Python
Python考拉兹猜想输出序列代码实践
Jul 05 #Python
python读写csv文件实例代码
Jul 05 #Python
You might like
不用数据库的多用户文件自由上传投票系统(1)
2006/10/09 PHP
php数字转汉字代码(算法)
2011/10/08 PHP
php实现斐波那契数列的简单写法
2014/07/19 PHP
golang、python、php、c++、c、java、Nodejs性能对比
2017/03/12 NodeJs
jQuery点击tr实现checkbox选中的方法
2013/03/19 Javascript
JS执行删除前的判断代码
2014/02/18 Javascript
将form表单中的元素转换成对象的方法适用表单提交
2014/05/02 Javascript
处理文本部分内容的TextRange对象应用实例
2014/07/29 Javascript
Jquery api 速查表分享
2015/01/12 Javascript
js动态创建及移除div的方法
2015/06/03 Javascript
js判断手机号运营商的方法
2015/10/23 Javascript
jQuery 如何给Carousel插件添加新的功能
2016/04/18 Javascript
Bootstrap自定义文件上传下载样式
2016/05/26 Javascript
XMLHttpRequest Level 2 使用指南
2016/08/26 Javascript
在 Angular2 中实现自定义校验指令(确认密码)的方法
2017/01/23 Javascript
关于Node.js的events.EventEmitter用法介绍
2017/04/01 Javascript
javascript 初学教程及五子棋小程序的简单实现
2017/07/04 Javascript
关于react-router的几种配置方式详解
2017/07/24 Javascript
微信小程序异步处理详解
2017/11/10 Javascript
jQuery实现checkbox的简单操作
2017/11/18 jQuery
JavaScript实现拖拽效果
2020/03/16 Javascript
JS字符串补全方法padStart()和padEnd()
2020/05/27 Javascript
vue中v-model对select的绑定操作
2020/08/31 Javascript
python读取浮点数和读取文本文件示例
2014/05/06 Python
Python中的二维数组实例(list与numpy.array)
2018/04/13 Python
Django REST framework视图的用法
2019/01/16 Python
Python遍历字典方式就实例详解
2019/12/28 Python
python 实现数据库中数据添加、查询与更新的示例代码
2020/12/07 Python
pycharm 配置svn的图文教程(手把手教你)
2021/01/15 Python
anaconda升级sklearn版本的实现方法
2021/02/22 Python
美国维生素、补充剂、保健食品购物网站:Vitacost
2016/08/05 全球购物
NFL Game Pass欧洲:在线观看NFL比赛直播和点播,以高清质量播放
2018/08/30 全球购物
英语专业求职信
2014/07/08 职场文书
幼儿园中班教育随笔
2015/08/14 职场文书
2016年小学推普宣传周活动总结
2016/04/06 职场文书
Django使用redis配置缓存的方法
2021/06/01 Redis