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操作列表的常用方法分享
Feb 13 Python
Python实现的一个简单LRU cache
Sep 26 Python
在Python中使用模块的教程
Apr 27 Python
Python求出0~100以内的所有素数
Jan 23 Python
Python3中的列表生成式、生成器与迭代器实例详解
Jun 11 Python
python中pip的安装与使用教程
Aug 10 Python
python判断输入日期为第几天的实例
Nov 13 Python
Python数据可视化实现正态分布(高斯分布)
Aug 21 Python
python爬虫爬取幽默笑话网站
Oct 24 Python
python redis存入字典序列化存储教程
Jul 16 Python
给numpy.array增加维度的超简单方法
Jun 02 Python
详解运行Python的神器Jupyter Notebook
Jun 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
无线电的诞生过程
2021/03/01 无线电
laravel框架的安装与路由实例分析
2019/10/11 PHP
一段批量给页面上的控件赋值js
2010/06/19 Javascript
javascript 系统文件夹文件操作及参数介绍
2013/01/08 Javascript
window.open关于浏览器拦截问题分析及解决方法
2013/02/05 Javascript
JS实现文字放大效果的方法
2015/03/03 Javascript
jquery密码强度校验
2015/12/02 Javascript
浅析$(function) ready和onload 的区别
2016/09/03 Javascript
jQuery基本过滤选择器用法示例
2016/09/09 Javascript
深入理解JavaScript定时机制
2016/10/27 Javascript
js实现仿购物车加减效果
2017/03/01 Javascript
ECMAScript6 新特性范例大全
2017/03/24 Javascript
JavaScript实现移动端轮播效果
2017/06/06 Javascript
微信小程序实现点击返回顶层的方法
2017/07/12 Javascript
js防抖和节流的深入讲解
2018/12/06 Javascript
JS中使用react-tooltip插件实现鼠标悬浮显示框
2019/05/15 Javascript
layui数据表格跨行自动合并的例子
2019/09/02 Javascript
Vue项目中Api的组织和返回数据处理的操作
2019/11/04 Javascript
vue点击标签切换选中及互相排斥操作
2020/07/17 Javascript
跨平台python异步回调机制实现和使用方法
2013/11/26 Python
Python实现快速多线程ping的方法
2015/07/15 Python
python编程开发之日期操作实例分析
2015/11/13 Python
浅谈Python数据类型之间的转换
2016/06/08 Python
Python logging模块用法示例
2018/08/28 Python
对pandas里的loc并列条件索引的实例讲解
2018/11/15 Python
解决python -m pip install --upgrade pip 升级不成功问题
2020/03/05 Python
python logging模块的使用详解
2020/10/23 Python
采购员的工作职责
2013/12/26 职场文书
留学推荐信(中英文版)
2015/03/26 职场文书
为自己工作观后感
2015/06/11 职场文书
大学生安全教育主题班会
2015/08/12 职场文书
2015年国庆放假通知范文
2015/08/18 职场文书
python数字转对应中文的方法总结
2021/08/02 Python
铁拳制作人赞《铁拳7》老头环Mod:制作精良 但别弄了
2022/04/03 其他游戏
css中有哪些方式可以隐藏页面元素及区别
2022/06/16 HTML / CSS
Nginx如何配置根据路径转发详解
2022/07/23 Servers