计算2个空间向量支架的夹角(固定系欧拉角XYZ)分量

前提:固定系欧拉角,旋转顺序XYZ

直接用py文件简单计算:

复制代码
from scipy.spatial.transform import Rotation
import numpy as np

def calculate_euler_angles(vec1, vec2, rotation_order='xyz'):
    # 将法向量转换为单位向量
    vec1_normalized = vec1 / np.linalg.norm(vec1)
    vec2_normalized = vec2 / np.linalg.norm(vec2)

    # 计算旋转轴(叉积)
    axis = np.cross(vec1_normalized, vec2_normalized)
    new_axis = axis / np.linalg.norm(axis)

    # 计算旋转角度(夹角)
    dot_product = np.dot(vec1_normalized, vec2_normalized)
    angle = np.arccos(dot_product)

    # 创建 Rotation 对象
    rotation = Rotation.from_rotvec(angle * new_axis)

    # 获取固定欧拉角
    euler_angles = rotation.as_euler(rotation_order, degrees=True)

    # 输出欧拉角
    print(f"Euler Angles ({rotation_order}): {euler_angles}")

# 两个法向量,这里使用示例值
vec1 = np.array([0.0003243, -0.0055068, 0.999985])  # src 
vec2 = np.array([0.0000204, -0.0055769, 0.9999844]) # dst

# 按照 xyz 欧拉角顺序计算欧拉角 
calculate_euler_angles(vec1, vec2, rotation_order='xyz')
相关推荐
第一程序员1 分钟前
Python深度学习实战:从理论到应用
python·github
乐园游梦记6 分钟前
下载 Docker 镜像(CVAT)资源
人工智能·python·深度学习·yolo·机器学习·cvat
第一程序员8 分钟前
Python数据分析:Pandas vs Polars 详细对比
python·github
程序员杰哥9 分钟前
Web UI自动化测试之PO篇
自动化测试·软件测试·python·selenium·测试工具·ui·测试用例
无责任此方_修行中11 分钟前
MkDocs宫斗事件:开源项目控制权争夺与技术社区分裂
python·程序员
lagrahhn11 分钟前
python面向对象中__new__和__init__区别
后端·python·程序员
羚羊角uou12 分钟前
【Linux网络】select详解
linux·服务器·开发语言·网络·c++
C++ 老炮儿的技术栈13 分钟前
c++ this 指针的用途
c语言·开发语言·c++·windows·qt·github
watersink13 分钟前
第7章 软件架构设计
java·开发语言
风舞雪凌月16 分钟前
【趣谈】移动系统和桌面系统编程语言思考
java·c语言·c++·python·学习·objective-c·swift