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中用format函数格式化字符串的用法
Apr 08 Python
Python中用于计算对数的log()方法
May 15 Python
Python+matplotlib实现华丽的文本框演示代码
Jan 22 Python
Python网络编程之TCP与UDP协议套接字用法示例
Feb 02 Python
pycharm 取消默认的右击运行unittest的方法
Nov 29 Python
python 类之间的参数传递方式
Dec 20 Python
解决Tensorflow sess.run导致的内存溢出问题
Feb 05 Python
Python netmiko模块的使用
Feb 14 Python
pytorch 中的重要模块化接口nn.Module的使用
Apr 02 Python
keras中的卷积层&池化层的用法
May 22 Python
python 获取计算机的网卡信息
Feb 18 Python
python lambda 表达式形式分析
Apr 03 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中的魔术方法总结和使用实例
2015/05/11 PHP
PHP基于ICU扩展intl快速实现汉字转拼音及按拼音首字母分组排序的方法
2017/05/03 PHP
PHP连接MySQL数据库操作代码实例解析
2020/07/11 PHP
Javascript 面向对象编程(coolshell)
2012/03/18 Javascript
在百度知道团队中快速审批新成员的js脚本
2014/02/02 Javascript
JavaScript获取浏览器信息的方法
2015/11/20 Javascript
javascript轻量级库createjs使用Easel实现拖拽效果
2016/02/19 Javascript
Bootstrap每天必学之轮播(Carousel)插件
2016/04/25 Javascript
jquery实现左右无缝轮播图
2020/07/31 Javascript
jQuery实现点击行选中或取消CheckBox的方法
2016/08/01 Javascript
Angularjs 事件指令详细整理
2017/07/27 Javascript
Vue 2.0学习笔记之使用$refs访问Vue中的DOM
2017/12/19 Javascript
JavaScript面试出现频繁的一些易错点整理
2018/03/29 Javascript
webstorm添加*.vue文件支持
2018/05/08 Javascript
clipboard.js在移动端复制失败的解决方法
2018/06/13 Javascript
详解Angular-ui-BootStrap组件的解释以及使用
2018/07/13 Javascript
为什么说JavaScript预解释是一种毫无节操的机制详析
2018/11/18 Javascript
React Hooks 实现和由来以及解决的问题详解
2020/01/17 Javascript
[01:18]DOTA2超级联赛专访hanci ForLove淘汰感言曝光
2013/06/04 DOTA
详解Python中的各种函数的使用
2015/05/24 Python
Python随机生成带特殊字符的密码
2016/03/02 Python
Python实现简单的四则运算计算器
2016/11/02 Python
Python程序中设置HTTP代理
2016/11/06 Python
pycharm下打开、执行并调试scrapy爬虫程序的方法
2017/11/29 Python
使用python将图片按标签分入不同文件夹的方法
2018/12/08 Python
安装完Python包然后找不到模块的解决步骤
2020/02/13 Python
Python读取文件内容为字符串的方法(多种方法详解)
2020/03/04 Python
Pycharm中切换pytorch的环境和配置的教程详解
2020/03/13 Python
Python脚本破解压缩文件口令实例教程(zipfile)
2020/06/14 Python
WWE美国职业摔角官方商店:WWE Shop
2018/11/15 全球购物
如何让Java程序执行效率更高
2014/06/25 面试题
在校生钳工实习自我鉴定
2013/09/19 职场文书
离婚协议书怎样才有法律效力
2014/10/10 职场文书
初中团委工作总结
2015/08/13 职场文书
Python 快速验证代理IP是否有效的方法实现
2021/07/15 Python
Innodb存储引擎中的后台线程详解
2022/04/03 MySQL