计算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')
相关推荐
MATLAB滤波1 小时前
MATLAB中的绘图技巧
开发语言·matlab
赵孝正1 小时前
如何在jupyter notebook切换python环境
ide·python·jupyter
致宏Rex1 小时前
Rust 入门指南(零):安装及 Cargo 管理器
开发语言·rust
伏虎山真人2 小时前
R门 - rust第一课陈天 -内存知识学习笔记
开发语言·r语言
好开心332 小时前
javaScript交互补充(元素的三大系列)
开发语言·前端·javascript·ecmascript
Z2116133472 小时前
学习日志011--模块,迭代器与生成器,正则表达式
python
CrazyCosin2 小时前
Clip结合Faiss+Flask简易版文搜图服务
python·flask·faiss
码农多耕地呗2 小时前
刷别的学校oj—河工大oj1073-1099
开发语言·c++·算法
Envyᥫᩣ2 小时前
掌握C#中的异步编程:async和await关键字详解
开发语言·c#