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

 更新时间:2019年07月05日 14:56:21   作者:Javy Wang  
今天小编就为大家分享一篇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实现图片上添加图片

    这篇文章主要为大家详细介绍了python实现图片上添加图片,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-11-11
  • Python之tkinter面板PanedWindow的使用

    Python之tkinter面板PanedWindow的使用

    这篇文章主要介绍了Python之tkinter面板PanedWindow的使用及说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-05-05
  • django下创建多个app并设置urls方法

    django下创建多个app并设置urls方法

    在本篇文章里小编给大家分享的是一篇关于django下创建多个app并设置urls方法,需要的朋友们可以参考学习下。
    2020-08-08
  • Pytorch中Softmax和LogSoftmax的使用详解

    Pytorch中Softmax和LogSoftmax的使用详解

    这篇文章主要介绍了Pytorch中Softmax和LogSoftmax的使用详解,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-06-06
  • python BytesIO 中 read 用法示例详解

    python BytesIO 中 read 用法示例详解

    这篇文章主要介绍了python BytesIO 中 read 用法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-06-06
  • Flask-SocketIO服务端安装及使用代码示例

    Flask-SocketIO服务端安装及使用代码示例

    这篇文章主要介绍了Flask-SocketIO服务端安装及使用代码示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-11-11
  • Python实现自定义读写分离代码实例

    Python实现自定义读写分离代码实例

    这篇文章主要介绍了Python实现自定义读写分离代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11
  • 利用Python编写一个蹭WiFi的软件

    利用Python编写一个蹭WiFi的软件

    这篇文章主要为大家详细介绍了如何利用Python编写一个简易的蹭WiFi的软件,文中的示例代码讲解详细,感兴趣的小伙伴可以学习一下
    2023-06-06
  • 实例探究Python以并发方式编写高性能端口扫描器的方法

    实例探究Python以并发方式编写高性能端口扫描器的方法

    端口扫描器就是向一批端口上发送请求来检测端口是否打开的程序,这里我们以实例探究Python以并发方式编写高性能端口扫描器的方法
    2016-06-06
  • Python项目 基于Scapy实现SYN泛洪攻击的方法

    Python项目 基于Scapy实现SYN泛洪攻击的方法

    今天小编就为大家分享一篇Python项目 基于Scapy实现SYN泛洪攻击的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-07-07

最新评论