不同视角理解三维旋转
在二维空间中,绕任意点旋转可以分解为:
1)平移旋转点到原点,2)绕原点旋转,3)逆平移旋转点;
可用矩阵表示为
,
其中,
表示绕原点旋转
,
为平移矩阵。
在三维空间中绕任意轴旋转一个对象,可以分解为分别绕不同轴旋转一定角度。
1 绕三维坐标轴旋转
设 x,y,z 为三个正交方向上的单位向量,将他们构成三维空间坐标需要满足以下叉乘关系:
;
定义绕各个坐标轴旋转方向如下图:
当任意点绕 Z 轴旋转时,该点在 Z 轴上坐标保持不变,在 X,Y 轴上坐标轴上退化为二维旋转,如下图所示:
由
得
,
由
得
,
最终得:
,其中矩阵变换表示为:
;
同理, 绕 X 轴旋转表示为:
,绕 Y 轴旋转表示为:
。
当对任意点旋转
后再旋转
,该点回到原始位置,则旋转矩阵
是旋转矩阵
得逆矩阵,观察以上旋转矩阵可知
。
2 绕过原点任意单位向量轴旋转
当旋转轴为过原点任意轴时,可使用如下方案旋转:
1)旋转对象使得旋转轴与某一坐标轴重合;
2)绕该坐标轴旋转;
3)使用逆旋转使旋转轴回到原始方向;
使用矩阵表示为:
。
如上图所示,u=(a,b,c) 为任意过原点旋转轴,
。要旋转 u 使其与 z 轴重合,首先需将 u 轴旋转到 xz 平面。
将 u 投影到 yz 平面得
,在 yz 平面上将
旋转 到 z 轴的旋转角等于将 u 绕 x 轴旋转到 xz 平面。
根据余弦定理得:
。
利用向量叉乘求正弦:
,
,
求解得:
。这里不使用
求解是因为该公式无法确定计算结果符号。
使用矩阵形式表示 u 绕 x 轴旋转
:
,旋转后向量为:
。
绕 y 轴旋转到 z 轴上的旋转角余弦为:
。
利用向量叉乘求正弦:
,
,
。
使用矩阵形式表示
绕 y 轴旋转
:
。
当将任意单位坐标做旋转到与 z 轴重合后,使用以下矩阵完成真实旋转:
。
然后使用逆旋转矩阵还原原始坐标(逆旋转矩阵为对应旋转矩阵的转置矩阵),实现绕任意过原点单位向量旋转。
3 罗德里格斯公式
使用罗德里格斯公式,同样可以实现绕过原点任意单位向量旋转,详细讲解在 使用罗德里格斯公式描述三维旋转_rodriguez formula的引用-CSDN博客。
该方法最终推导出了旋转矩阵为:
,
。
理论上来说,以上两种方案推导出的旋转矩阵应该是一致的(旋转轴与旋转角度一致情况下)。
4 引入平移
当旋转轴不过原点时,可以引入平移矩阵实现绕任意轴旋转。
假设旋转轴过点
,
,
,
首先构造单位长度旋转轴向量为:
,
构造平移矩阵为:
,
旋转矩阵
被改写为:
,
旋转轴为以上单位旋转向量,从而实现了绕任意轴旋转。
在罗德里格斯公式中,采用同样方式构造绕任意轴旋转矩阵为:
。
5 四元数描述旋转
1)四元数概念
四元数是复数到高维扩充,定义为
,
。
将四元数表示成向量
,
定义四元数加法为
,
等价于
。
定义四元数乘法为
。
由于四元数平方和为
,可定义四元数的逆为
,使得
成立。
2)描述旋转轴为过原点任意单位向量的旋转
为旋转轴单位向量,定义
,
则任意点 p = (x,y,z) 被描述为
,旋转后点为
,
使用公式
可计算出 p 点旋转后坐标
。
使用四元数计算规则可得
,
由于
,有
,
。
引入向量 v 的叉积矩阵
,上式可改写为:
,实现 p 到
旋转变换。
3)与罗德里格斯公式关系
令旋转轴为单位向量(x,y,z),旋转角度为
,旋转四元数定义为
;
根据三角函数有
,
,
罗德里格斯公式改写为
,
由于
,可定义
,
进一步改写罗德里格斯公式
,
最终整理结果为
;
将
整理成矩阵形式,其结果与罗德里格斯整理矩阵一致,因此验证了两种方式是一致的。
相关文章:

不同视角理解三维旋转
在二维空间中,绕任意点旋转可以分解为: 1)平移旋转点到原点,2)绕原点旋转,3)逆平移旋转点; 可用矩阵表示为 , 其中, 表示绕原点旋转 , 为平移矩…...

Adobe Acrobat——设置PDF打印页面的大小
1. 打开 PDF 文件; 2. 点击菜单栏的 “文件” → “打印”; 3. 在打印对话框中,点击 “属性”; 4. 点击 “布局”→ “高级”; 5. 点击 “纸张规格”,选择 “PostScript 自定义页面大小”,然后…...
Android apk装机编译类型: verify、speed-profile, speed与启动耗时
Android apk装机编译类型: verify、speed-profile, speed与启动耗时 Dex2oat (dalvik excutable file to optimized art file) ,对 dex 文件进行编译优化,Android 虚拟机可识别的是dex文件,应用运行过程如果每次都将dex文件加载内存ÿ…...
纹理压缩格式优化
🎯 Unity 项目纹理压缩格式优化终极指南 ——不同平台、不同手机型号,如何正确选择 🧩 什么是纹理压缩(Texture Compression)? Texture压缩 = 减小显存占用,提升加载速度,减轻GPU负担纹理是游戏中最大资源,占用50%+内存正确压缩:减少GPU Bandwidth,提高渲染性能错…...

使用Virtual Serial Port Driver+com2tcp(tcp2com)进行两台电脑的串口通讯
使用Virtual Serial Port Drivercom2tcp或tcp2com进行两台电脑的串口通讯 问题说明解决方案方案三具体操作流程网上教程软件安装拓扑图准备工作com2tcp和tcp2com操作使用串口助手进行验证 方案三存在的问题数据错误通讯延时 问题说明 最近想进行串口通讯的一个测试,…...
【从0-1的HTML】第3篇:html引入css的3种方式
文章目录 HTML中引入CSS的方式行内样式内部样式外部样式yinru.css文件 完整html文件 引入CSS方式的优先级 HTML中引入CSS的方式 HTML:是使用标签来描述网页元素 CSS:是Cascading Style Sheets,层叠样式表,用来控制样式来显示网页…...

数智破局·生态共生:重构全球制造新引擎 2025 WOD制造业数字化博览会即将在沪盛大启幕
共探数智化未来,共创新质生产力。2025年6月17日—19日,上海浦东新国际博览中心将迎来全球制造业数字化转型的盛会——WOD制造业数字化博览会。作为全球首个聚焦制造业数字化全场景的专业展会,本届展会以“数智破局生态共生:重构全…...
machine_env_loader must have been assigned before creating ssh child instance
在主机上执行roslaunch命令时,报错:machine_env_loader must have been assigned before creating ssh child instance。 解决办法: 打开hostos文件,检查local host 前的内部ip是否正常。操作示例: 先输入下方指令打…...

BGP/MPLS IP VPN跨域解决方案
目录 MPLS VPN跨域方案出现背景: MPLS VPN回顾 VRF(Virtual Route Forward)虚拟路由转发 MPLS(Multiple Protcol Label Swtich)多协议标签交换 MP-BGP多协议BGP MPLS VPN跨域OptionA 控制平面: 转发平面: 总结: 挑战: MPLS VPN跨域OptionB 非RR场景: 控制平面: 转发…...
C语言-10.字符串
10.1字符串 10.1-1字符串 字符数组 char word[] = {‘H’,‘e’,‘l’,‘l’,‘o’,‘!’}; word[0]Hword[1]eword[2]lword[3]lword[4]oword[5]!这不是C语言的字符串,因为不能用字符串的方式做计算 字符串 char word[] = {‘H’,‘e’,‘l’,‘l’,‘o’,‘!’}; word[0]Hwo…...

backend 服务尝试连接 qdrant 容器,但失败了,返回 502 Bad Gateway 问题排查
遇到的问题是: backend 报错:502 Bad Gateway 来自 Qdrant → 导致接口 /api/chat 返回 500 Internal Server Error并且日志中提示: QDRANT_URL http://qdrant:6333✅ 问题分析 这个错误的根本原因是: 你的 backend 服务尝试连…...
硬件学习笔记--66 MCU的DMA简介
DMA(Direct Memory Access,直接存储器访问)是MCU中一种重要的数据传输机制,它允许外设与存储器之间或存储器与存储器之间直接传输数据,而无需CPU的持续干预。 1、DMA的基本原理 1.1 核心概念: 1…...

18. Qt系统相关:多线程
一、概述 在Qt中,使用QThread类对系统线程进行了封装。QThread代表一个在应用程序中可独立控制的线程,也可以和进程中的其他线程共享数据。 二、QThread常用API 三、QThread使用 自定义一个类,继承自QThread,并且只有一个线程处…...

6个月Python学习计划 Day 14 - 异常处理基础( 补充学习)
第二周 Day 8 - Python 函数基础 Day 9 - 函数进阶用法 Day 10 - 模块与标准库入门 Day 11 - 列表推导式、内置函数进阶、模块封装实战 Day 12 - 字符串处理 & 文件路径操作 Day 13 - 文件操作基础 🎯 今日目标 理解异常的概念和常见异常类型掌握 try-except …...

使用jstack排查CPU飙升的问题记录
最近,看到短视频传播了一个使用jstack来协助排查CPU飙升的案例。我也是比较感兴趣,参考了视频博主的流程,自己做了下对应案例的实战演练,在此,想做一下,针对相关问题模拟与排查演练的实战过程记录。 案例中…...

cursor如何开启自动运行模式
在Cursor中,开启自动运行模式即启用“Yolo Mode”,具体操作如下: 按下Ctrl Shift J(Windows/Linux)或Cmd Shift J(Mac)打开Cursor设置。导航到“Features”(功能)选…...

SecureCRT 设置超时自动断开连接时长
我们在使用SecureCRT 连接服务器时,经常性出现2分钟未操作已连接的服务器,就会自动断开连接,此时需要重新连接,非常影响服务器操作,本文可以很好带领大家解决这种问题。...
《复制粘贴的奇迹:原型模式》
📖 背景故事 创业初期,小明每天加班写配送路线、配送策略、营销套餐。可当业务做大后,他发现大家常常下单“上次那个套餐”—— “老板,再来一个上次的奶茶水果!” “老样子,照搬昨天晚上的宵夜套餐&#…...

IEC 61347-1:2015 灯控制装置安全标准详解
IEC 61347-1:2015灯控制装置安全标准详解 IEC 61347-1:2015 是国际电工委员会(IEC)发布的灯控制装置第1部分:通用要求和安全要求的核心标准,为各类照明用电子控制设备设定了全球通用的安全基准。该标准适用于独立式或内置于灯具/…...

Ansys Zemax | 手机镜头设计 - 第 4 部分:用 LS-DYNA 进行冲击性能分析
附件下载 联系工作人员获取附件 该系列文章将讨论智能手机镜头模组设计的挑战,从概念和设计到制造和结构变形分析。本文是四部分系列中的第四部分,它涵盖了相机镜头的显式动态模拟,以及对光学性能的影响。使用 Ansys Mechanical 和 LS - DY…...
[蓝桥杯]实现选择排序
实现选择排序 题目描述 实现选择排序算法。介绍如下: 选择排序的工作原理是每一次从需要排序的数据元素中选出最小的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排列完毕。 请编写代码,完成选择排序,…...

[蓝桥杯]卡片换位
卡片换位 题目描述 你玩过华容道的游戏吗? 这是个类似的,但更简单的游戏。 看下面 3 x 2 的格子 --------- | A | * | * | --------- | B | | * | --------- 在其中放 5 张牌,其中 A 代表关羽,B 代表张飞,* …...

【论文笔记】High-Resolution Representations for Labeling Pixels and Regions
【题目】:High-Resolution Representations for Labeling Pixels and Regions 【引用格式】:Sun K, Zhao Y, Jiang B, et al. High-resolution representations for labeling pixels and regions[J]. arXiv preprint arXiv:1904.04514, 2019. 【网址】…...

【题解-洛谷】P9422 [蓝桥杯 2023 国 B] 合并数列
题目:P9422 [蓝桥杯 2023 国 B] 合并数列 题目描述 小明发现有很多方案可以把一个很大的正整数拆成若干正整数的和。他采取了其中两种方案,分别将他们列为两个数组 { a 1 , a 2 , ⋯ a n } \{a_1, a_2, \cdots a_n\} {a1,a2,⋯an} 和 { b 1 , …...
在MATLAB中,`mean(P_train, 2)` 的含义
在MATLAB中,mean(P_train, 2) 的含义是: 计算矩阵 P_train 中每一行的平均值(沿第2个维度操作)。 详解: mean(A, dim) 函数: 对数组 A 沿维度 dim 求平均值。dim1 → 按列计算(返回行向量&…...
开源模型应用落地-OpenAI Agents SDK-集成Qwen3-8B(一)
一、前言 在人工智能技术迅猛发展的今天,OpenAI Agents SDK 为开发者提供了一个强大的工具集,用于构建基于 Python 的智能代理应用。这些代理可以执行从简单任务到复杂决策的一系列操作,极大地提升了应用程序的智能化水平。 通过 OpenAI Agents SDK,可以利用 Python 编程语…...

109页PPT华为流程模块L1-L4级梳理及研发采购服务资产5级建模
华为的流程体系是其核心竞争力之一,也是其从一家小型民营企业成长为全球领先科技巨头的重要支撑。这套体系的核心思想是以客户为中心、以价值创造为导向、以流程驱动业务、持续优化改进。 下载资料请查看文章中图片右下角信息 以下是华为流程体系的关键组成部分和特…...

第N1周:one-hot编码案例
🍨 本文为🔗365天深度学习训练营中的学习记录博客 🍖 原作者:K同学啊 一、one-hot编码概念 自然语言处理(NLP)中的文本数字化:文字对于计算机来说就仅仅只是一个个符号,计算…...

Windows安装docker desktop
Windows 版本: Windows 10/11(64位)专业版、企业版或教育版(家庭版需手动配置)。 版本号需 ≥ 1909(建议更新到最新系统) 打开程序 启动服务后点点点 重启生效(没有的话 安装WSL…...

Ros(俩不同包的节点 交流 topic message)
不同的俩节点 如chao_node 和ma_node .在俩不同的包下。 他们若想互相产生联系, 就需要靠这个关系了。 想象一下是开黑的场景 其实群名就是topic 而发送的消息就是Message。 其中主动刷屏的message的一方 就是 Publisher 而接受的那一方 就是subsciber...