计算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')
相关推荐
应用市场7 分钟前
PHP microtime()函数精度问题深度解析与解决方案
android·开发语言·php
ZhengEnCi10 分钟前
Python 特点和版本完全指南 - 从零基础到选择最适合的编程语言
python
长存祈月心23 分钟前
Rust HashSet 与 BTreeSet深度剖析
开发语言·后端·rust
长存祈月心27 分钟前
Rust BTreeMap 红黑树
开发语言·后端·rust
好奇的候选人面向对象1 小时前
基于 Element Plus 的 TableColumnGroup 组件使用说明
开发语言·前端·javascript
wjs20241 小时前
CSS3 圆角
开发语言
颜颜yan_1 小时前
Rust impl块的组织方式:从基础到实践的深度探索
开发语言·后端·rust
代码改善世界1 小时前
Rust 入门基础:安全、并发与高性能的系统编程语言
开发语言·安全·rust
没有故事、有酒1 小时前
Axios
开发语言·php
xiaozaq1 小时前
java 正则表达式 所有的优先级
java·开发语言·正则表达式