python 求两个向量的顺时针夹角操作


Posted in Python onMarch 04, 2021

python 求两个向量的顺时针夹角操作

以上述图片举例,要求 python 求两个向量的顺时针夹角操作 相对 python 求两个向量的顺时针夹角操作 的顺时针夹角。注意:这里使用图像坐标系

1 定义求顺时针角度的函数

import numpy as np
def clockwise_angle(v1, v2):
 x1,y1 = v1
 x2,y2 = v2
 dot = x1*x2+y1*y2
 det = x1*y2-y1*x2
 theta = np.arctan2(det, dot)
 theta = theta if theta>0 else 2*np.pi+theta
 return theta

2 求 python 求两个向量的顺时针夹角操作 , 然后求夹角 python 求两个向量的顺时针夹角操作

v1 = [2-0, 1-0] = [2,1]
v2 = [4-0, 5-0] = [4,5]
theta = clockwise_angle(v1,v2)
print(theta*180/np.pi) # 24.77

python 求两个向量的顺时针夹角操作

补充:求2个向量顺逆时针(最小角度)旋转角度 Python

求向量 a 旋转到向量 b 的顺时针(逆时针)最小角度。

正常求2个向量夹角用内积公式就可以计算,然而求得的结果不包含方向信息。

如果需要方向信息的话需要引入向量的外积来帮助我们判断。

python 求两个向量的顺时针夹角操作

theta是两个向量的夹角,n是垂直与2维平面的方向向量,由右手定则可以判断方向。

根据定义可以通过向量的坐标计算外积

python 求两个向量的顺时针夹角操作

这里面由于u,v是二维平面上的向量, u3 v3 都为0。 所以 u叉乘v = (u1v2 - u2v1)*K。

所以等式两边的标量相等可以求夹角rho。

rho 是带正负号的和旋转方向有关,但是范围在 -90 ~ 90度。

可以通过rho正负号,结合向量的点乘重新计算带方向的夹角。

这里面顺时针旋转为负,逆时针旋转为正。

def GetClockAngle(v1, v2):
 # 2个向量模的乘积
 TheNorm = np.linalg.norm(v1)*np.linalg.norm(v2)
 # 叉乘
 rho = np.rad2deg(np.arcsin(np.cross(v1, v2)/TheNorm))
 # 点乘
 theta = np.rad2deg(np.arccos(np.dot(v1,v2)/TheNorm))
 if rho < 0:
  return - theta
 else:
  return theta
a = [0,1]
b = [1,0]
c = [-1,0]
d = [0, -1]
e = [-1, -1]
f = [1, -1]
g = [1, 1]
h = [-1, 1]
print(GetClockAngle(a,g), GetClockAngle(a,b), GetClockAngle(a,f), GetClockAngle(a,d), \
 GetClockAngle(a,e), GetClockAngle(a,c), GetClockAngle(a,h))
'''
结果
(-45.00000000000001, -90.0, -135.0, 180.0, 135.0, 90.0, 45.00000000000001)
'''

python 求两个向量的顺时针夹角操作

以上为个人经验,希望能给大家一个参考,也希望大家多多支持三水点靠木。如有错误或未考虑完全的地方,望不吝赐教。

Python 相关文章推荐
Python的Flask框架中配置多个子域名的方法讲解
Jun 07 Python
Python使用cx_Oracle调用Oracle存储过程的方法示例
Oct 07 Python
python写入并获取剪切板内容的实例
May 31 Python
对pycharm 修改程序运行所需内存详解
Dec 03 Python
详解python 爬取12306验证码
May 10 Python
python文字和unicode/ascll相互转换函数及简单加密解密实现代码
Aug 12 Python
使用Python调取任意数字资产钱包余额功能
Aug 15 Python
python数值基础知识浅析
Nov 19 Python
利用python实现平稳时间序列的建模方式
Jun 03 Python
Python unittest装饰器实现原理及代码
Sep 08 Python
Python+OpenCV图像处理——图像二值化的实现
Oct 24 Python
最新PyCharm 2020.2.3永久激活码(亲测有效)
Nov 26 Python
python 制作磁力搜索工具
Mar 04 #Python
python抢购软件/插件/脚本附完整源码
Mar 04 #Python
Python 求向量的余弦值操作
Mar 04 #Python
django使用多个数据库的方法实例
Mar 04 #Python
Python使用paramiko连接远程服务器执行Shell命令的实现
Mar 04 #Python
Python 调用C++封装的进一步探索交流
Mar 04 #Python
使用Python webdriver图书馆抢座自动预约的正确方法
Mar 04 #Python
You might like
PHP中使用gettext解决国际化问题的例子(i18n)
2014/06/13 PHP
php实现微信扫码自动登陆与注册功能
2016/09/22 PHP
jQuery的deferred对象详解
2014/11/12 Javascript
jQuery中scrollTop()方法用法实例
2015/01/16 Javascript
jquery实现的蓝色二级导航条效果代码
2015/08/24 Javascript
JavaScript+CSS实现仿天猫侧边网页菜单效果
2015/08/25 Javascript
80%应聘者都不及格的JS面试题
2017/03/21 Javascript
JavaScript错误处理和堆栈追踪详解
2017/04/18 Javascript
Angualrjs 表单验证的两种方式(失去焦点验证和点击提交验证)
2017/05/09 Javascript
React-Native做一个文本输入框组件的实现代码
2017/08/10 Javascript
jQuery 实时保存页面动态添加的数据的示例
2017/08/14 jQuery
nodejs基于WS模块实现WebSocket聊天功能的方法
2018/01/12 NodeJs
vue计算属性和监听器实例解析
2018/05/10 Javascript
微信小程序实现自定义picker选择器弹窗内容
2020/05/26 Javascript
vue、react等单页面项目部署到服务器的方法及vue和react的区别
2018/09/29 Javascript
JavaScript函数的4种调用方法实例分析
2019/03/05 Javascript
javascript canvas API内容整理
2020/02/16 Javascript
Vue3 的响应式和以前有什么区别,Proxy 无敌?
2020/05/20 Javascript
Vue前端判断数据对象是否为空的实例
2020/09/02 Javascript
python的Template使用指南
2014/09/11 Python
Python实现将Excel转换成xml的方法示例
2018/08/25 Python
Python 创建新文件时避免覆盖已有的同名文件的解决方法
2018/11/16 Python
Python基于Twilio及腾讯云实现国际国内短信接口
2020/06/18 Python
浅谈优化Django ORM中的性能问题
2020/07/09 Python
python 写一个文件分发小程序
2020/12/05 Python
升职自荐信
2013/11/28 职场文书
音乐教学随笔感言
2014/02/19 职场文书
企业文化标语大全
2014/06/10 职场文书
初中学习计划书范文
2014/09/15 职场文书
学习十八大标语
2014/10/09 职场文书
工厂采购员岗位职责
2015/04/07 职场文书
乡镇团代会开幕词
2016/03/04 职场文书
使用python向MongoDB插入时间字段的操作
2021/05/18 Python
MySQL系列之二 多实例配置
2021/07/02 MySQL
Javascript设计模式之原型模式详细
2021/10/05 Javascript
CSS作用域(样式分割)的使用汇总
2021/11/07 HTML / CSS