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 代码效率的方法
Jul 03 Python
利用Python中的mock库对Python代码进行模拟测试
Apr 16 Python
python数组复制拷贝的实现方法
Jun 09 Python
wxPython使用系统剪切板的方法
Jun 16 Python
利用Python如何生成随机密码
Apr 20 Python
python遍历序列enumerate函数浅析
Oct 17 Python
python实现网页自动签到功能
Jan 21 Python
Python实现Mysql数据统计及numpy统计函数
Jul 15 Python
python各类经纬度转换的实例代码
Aug 08 Python
python实现代码统计器
Sep 19 Python
用opencv给图片换背景色的示例代码
Jul 08 Python
Python类的继承super相关原理解析
Oct 22 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 采集书并合成txt格式的实现代码
2009/03/01 PHP
解析PHP实现下载文件的两种方法
2013/07/05 PHP
ThinkPHP3.1新特性之对页面压缩输出的支持
2014/06/19 PHP
PHP中常用的输出函数总结
2014/09/22 PHP
php按字符无乱码截取中文的方法
2015/03/27 PHP
CI框架整合smarty步骤详解
2016/05/19 PHP
利用PHP访问MySql数据库的逻辑操作以及增删改查的实例讲解
2017/08/30 PHP
ThinkPHP框架获取最后一次执行SQL语句及变量调试简单操作示例
2018/06/13 PHP
如何在Mozilla Gecko 用Javascript加载XSL
2007/01/09 Javascript
比较简单的一个符合web标准的JS调用flash方法
2007/11/29 Javascript
jquery提示 "object expected"的解决方法
2009/12/13 Javascript
Javascript中引用示例介绍
2014/02/21 Javascript
Js中使用hasOwnProperty方法检索ajax响应对象的例子
2014/12/08 Javascript
jQuery中index()方法用法实例
2014/12/27 Javascript
详解js私有作用域中创建特权方法
2016/01/25 Javascript
Bootstrap媒体对象的实现
2016/05/01 Javascript
微信QQ的二维码登录原理js代码解析
2016/06/23 Javascript
jQuery Easyui datagrid行内实现【添加】、【编辑】、【上移】、【下移】
2016/12/19 Javascript
jQuery自定义插件详解及实例代码
2016/12/29 Javascript
jquery网页加载进度条的实现
2017/06/01 jQuery
原生JS封装animate运动框架的实例
2017/10/12 Javascript
webpack打包并将文件加载到指定的位置方法
2018/02/22 Javascript
Vuex中mutations与actions的区别详解
2018/03/01 Javascript
JavaScript实现省份城市的三级联动
2020/02/11 Javascript
Python 返回汉字的汉语拼音
2009/02/27 Python
Python实现将一个大文件按段落分隔为多个小文件的简单操作方法
2017/04/17 Python
Python 利用邮件系统完成远程控制电脑的实现(关机、重启等)
2019/11/19 Python
简单了解python列表和元组的区别
2020/05/14 Python
HTML5 Canvas如何实现纹理填充与描边(Fill And Stroke)
2013/07/15 HTML / CSS
HTML5 在canvas中绘制文本附效果图
2014/06/23 HTML / CSS
Laura Geller官网:美国彩妆品牌
2018/12/29 全球购物
英国最好的包装供应商:Priory Direct
2019/12/17 全球购物
心得体会格式及范文
2016/01/25 职场文书
《初涉尘世》读后感3篇
2020/01/10 职场文书
nginx里的rewrite跳转的实现
2021/03/31 Servers
golang import自定义包方式
2021/04/29 Golang