计算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')
相关推荐
小兵张健4 分钟前
Java + Spring 到 Python + FastAPI (一)
java·python·spring
草莓火锅12 分钟前
用c++求第n个质数
开发语言·c++·算法
aniden28 分钟前
Swagger从入门到实战
java·开发语言·spring
emma羊羊44 分钟前
【PHP反序列化】css夺旗赛
开发语言·网络安全·php
2401_8414956444 分钟前
【自然语言处理】基于统计基的句子边界检测算法
人工智能·python·算法·机器学习·自然语言处理·统计学习·句子边界检测算法
程序员爱钓鱼1 小时前
Python编程实战 - Python实用工具与库 - 操作Word:python-docx
后端·python
程序员爱钓鱼1 小时前
Python编程实战 - Python实用工具与库 - 操作PDF:pdfplumber、PyPDF2
后端·python
啾啾啾6661 小时前
连接一个新的服务器时,打开PyCharm时报错:报错内容是服务器磁盘或配额满了
python·pycharm
threelab1 小时前
Merge3D:重塑三维可视化体验的 Cesium+Three.js 融合引擎
开发语言·javascript·3d
liu****1 小时前
16.udp_socket(三)
linux·开发语言·数据结构·c++·1024程序员节