计算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')
相关推荐
CodeCraft Studio9 小时前
Vaadin 25 正式发布:回归标准Java Web,让企业级开发更简单、更高效
java·开发语言·前端·vaadin·java web 框架·纯java前端框架·企业级java ui框架
Shirley~~9 小时前
PPTist 幻灯片工具栏Toolbar部分
开发语言·前端·javascript
|晴 天|9 小时前
Promise 与 async/await 错误处理最佳实践指南
开发语言·前端·javascript
_OP_CHEN9 小时前
【Python基础】(三)Python 语法基础进阶:条件循环 + 实战案例,从入门到精通的核心跳板
开发语言·python·python入门·条件语句·循环语句·python基础语法
苹果电脑的鑫鑫9 小时前
.eslintrc.js这个文件作用
开发语言·javascript·ecmascript
ytttr8739 小时前
matlab进行利用遗传算法对天线阵列进行优化
开发语言·算法·matlab
无限进步_9 小时前
【C语言】队列(Queue)数据结构的实现与分析
c语言·开发语言·数据结构·c++·算法·链表·visual studio
特立独行的猫a9 小时前
Google C++ 编码规范核心要点总结 (2025精简版)
开发语言·c++·编码规范
快乐非自愿9 小时前
Java函数式接口——渐进式学习
java·开发语言·学习
爱吃大芒果9 小时前
Flutter 表单开发实战:表单验证、输入格式化与提交处理
开发语言·javascript·flutter·华为·harmonyos