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运用于数据分析的简单教程
Mar 27 Python
使用PDB模式调试Python程序介绍
Apr 05 Python
python 使用re.search()筛选后 选取部分结果的方法
Nov 28 Python
Python用61行代码实现图片像素化的示例代码
Dec 10 Python
Python3 log10()函数简单用法
Feb 19 Python
浅谈python编译pyc工程--导包问题解决
Mar 20 Python
Python简易版停车管理系统
Aug 12 Python
pytorch实现focal loss的两种方式小结
Jan 02 Python
2021年的Python 时间轴和即将推出的功能详解
Jul 27 Python
Python实现数字的格式化输出
Aug 01 Python
scrapy中如何设置应用cookies的方法(3种)
Sep 22 Python
Python根据URL地址下载文件并保存至对应目录的实现
Nov 15 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
php运行出现Call to undefined function curl_init()的解决方法
2010/11/02 PHP
PHP开发工具ZendStudio下Xdebug工具使用说明详解
2013/11/11 PHP
php中利用explode函数分割字符串到数组
2014/02/08 PHP
PHP处理postfix邮件内容的方法
2015/06/16 PHP
PHP+Apache实现二级域名之间共享cookie的方法
2019/07/24 PHP
打开超链需要“确认”对话框的方法
2007/03/08 Javascript
extjs 3.31 TreeGrid实现静态页面加载json到TreeGrid里面
2013/04/02 Javascript
JS获取当前日期和时间的简单实例
2013/11/19 Javascript
javascript中interval与setTimeOut的区别示例介绍
2014/03/14 Javascript
JavaScript Math.floor方法(对数值向下取整)
2015/01/09 Javascript
javascript记住用户名和登录密码(两种方式)
2015/08/04 Javascript
JS阻止事件冒泡行为和闭包的方法
2016/06/16 Javascript
js实现精确到毫秒的倒计时效果
2016/08/05 Javascript
基于JavaScript实现树形下拉框
2016/08/10 Javascript
微信小程序 教程之模块化
2016/10/17 Javascript
vue2.0中set添加属性后视图不能更新的解决办法
2019/02/22 Javascript
15 分钟掌握vue-next响应式原理
2019/10/13 Javascript
[01:03:56]Mineski vs TNC 2018国际邀请赛淘汰赛BO1 8.21
2018/08/22 DOTA
python通过加号运算符操作列表的方法
2015/07/28 Python
对Python信号处理模块signal详解
2019/01/09 Python
Python3.6中Twisted模块安装的问题与解决
2019/04/15 Python
Python栈的实现方法示例【列表、单链表】
2020/02/22 Python
python开发实例之Python的Twisted框架中Deferred对象的详细用法与实例
2020/03/19 Python
python实现同一局域网下传输图片
2020/03/20 Python
Python如何获取文件路径/目录
2020/09/22 Python
Django项目在pycharm新建的步骤方法
2021/03/02 Python
小学校本培训方案
2014/06/06 职场文书
寝室长工作失责检讨书
2014/10/06 职场文书
代领报检证委托书范本
2014/10/11 职场文书
介绍信样本
2015/01/31 职场文书
单身申明具结书
2015/02/26 职场文书
2015年办公室个人工作总结
2015/04/20 职场文书
2015年国庆节演讲稿范文
2015/07/30 职场文书
JavaScript控制台的更多功能
2021/04/28 Javascript
Python编程编写完善的命令行工具
2021/09/15 Python
Canvas绘制像素风图片的示例代码
2021/09/25 HTML / CSS