罗德里格斯公式(旋转矩阵)推导

文章目录

      • 1. 推导
      • 2. 性质
      • 3. 参考

1. 推导

在这里插入图片描述

r r r为旋转轴, θ \theta θ为旋转角度。
先将旋转轴单位化
u = r ∣ ∣ r ∣ ∣ u=\frac{r}{||r||} u=∣∣r∣∣r
旋转可以被分为垂直和旋转两个方向,
我们求沿轴方向的分量其实就是在求 p p p向量在 u u u方向上的投影。

引用投影矩阵
P = A ( A ⊤ A ) − 1 A ⊤ P u = u ( u ⊤ u ) − 1 u ⊤ u ⊤ u = I P u = u u ⊤ P=A(A^{\top}A)^{-1}A^{\top}\\ P_u=u(u^{\top}u)^{-1}u^{\top}\\ u^{\top}u=I\\ P_u=uu^{\top} P=A(AA)1APu=u(uu)1uuu=IPu=uu
其实也可以直接以向量的方式思考
u ⊤ p = u ∗ p = ∣ ∣ u ∣ ∣ ∣ ∣ p ∣ ∣ cos ⁡ α u^{\top}p =u *p=||u|| \ ||p|| \cos \alpha up=up=∣∣u∣∣ ∣∣p∣∣cosα
还需要除 ∣ ∣ u ∣ ∣ ||u|| ∣∣u∣∣
∣ ∣ u ∣ ∣ = u ⊤ u u ⊤ p u ⊤ u ||u||=u^{\top}u \\ \frac{u^{\top}p}{u^{\top}u} ∣∣u∣∣=uuuuup
最后将值转换为向量
u u ⊤ p u ⊤ u = u u ⊤ p u\frac{u^{\top}p}{u^{\top}u}=uu^{\top}p uuuup=uup
a a a p p p在旋转轴 r r r上的分量
a = p ∥ = u u ⊤ p a=p_{\parallel}=uu^{\top}p a=p=uup
b b b p p p垂直旋转轴 r r r的分量
b = p ⊥ = p − a = p − u u ⊤ p b=p_{\perp}=p-a=p-uu^{\top}p b=p=pa=puup
c = u × p c=u \times p c=u×p,则 ∣ ∣ c ∣ ∣ = ∣ ∣ p ∣ ∣ ||c|| = ||p|| ∣∣c∣∣=∣∣p∣∣

b b b旋转 θ \theta θ后得到 b ′ b' b

b ′ = b cos ⁡ θ + c sin ⁡ θ b ′ = ( p − u u ⊤ p ) cos ⁡ θ + u × p sin ⁡ θ b'=b\cos \theta+c \sin \theta\\ b'=(p-uu^{\top}p) \cos \theta + u\times p \sin \theta b=bcosθ+csinθb=(puup)cosθ+u×psinθ

旋转后的 p ′ p' p
p ′ = a + b ′ = u u ⊤ p + ( p − u u ⊤ p ) cos ⁡ θ + u × p sin ⁡ θ p'=a+b'=uu^{\top}p+(p-uu^{\top}p) \cos \theta + u\times p \sin \theta p=a+b=uup+(puup)cosθ+u×psinθ
合并后得到
p ′ = ( I cos ⁡ θ + ( 1 − cos ⁡ θ ) u u ⊤ + u × sin ⁡ θ ) p p'=(I \cos \theta+(1-\cos \theta)uu^{\top}+u_{\times}\sin \theta)p p=(Icosθ+(1cosθ)uu+u×sinθ)p
其中 u × u_{\times} u×为叉乘矩阵
形式为
[ 0 z − y − z 0 x y − x 0 ] \begin{bmatrix} 0 & z & -y \\ -z & 0 & x \\ y & -x & 0 \end{bmatrix} 0zyz0xyx0
所以旋转矩阵为
R = I cos ⁡ θ + ( 1 − cos ⁡ θ ) u u ⊤ + u × sin ⁡ θ R=I\cos \theta+(1-\cos \theta)uu^{\top}+u_{\times} \sin \theta R=Icosθ+(1cosθ)uu+u×sinθ

2. 性质

t r a c e ( R ) = 2 cos ⁡ θ + 1 R − R ⊤ = 2 u × sin ⁡ θ \begin{align} trace(R)=2 \cos \theta+1\\ R-R^{\top}=2u_{\times} \sin \theta \end{align} trace(R)=2cosθ+1RR=2u×sinθ
性质一的证明,所有旋转矩阵都相似,构成一个正交群。
相似矩阵有性质
A = C − 1 B C A=C^{-1}BC A=C1BC
所以所有旋转矩阵有相同的迹。
取其中一个旋转矩阵
[ cos ⁡ θ − sin ⁡ θ 0 sin ⁡ θ cos ⁡ θ 0 0 0 1 ] \begin{bmatrix} \cos \theta & -\sin \theta & 0\\ \sin \theta & \cos \theta &0\\ 0 & 0 & 1 \end{bmatrix} cosθsinθ0sinθcosθ0001
所以
t r ( R ) = 2 cos ⁡ θ + 1 tr(R)=2 \cos \theta+1 tr(R)=2cosθ+1

3. 参考

michigan_state_university
duke
math_stackchange

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/330819.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Mujava 工具的简单使用

首先下载openjava.jar和mujava.jar,以及自己手写一个mujava.config指向存放mujava的目录,并将这些文件放在mujava目录下。此时,基本的mujava环境就搭建好了。 分别创建src(存放源码文件)、classes(存放源码…

从零搭建python环境:深入解析虚拟环境与Python版本管理

新书上架~👇全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一、引言:为何需要虚拟环境? 二、虚拟环境的创建与命名 1. 虚拟环境…

CTFHUB技能树——SSRF(二)

目录 上传文件 ​FastCGI协议 Redis协议 上传文件 题目描述&#xff1a;这次需要上传一个文件到flag.php了.祝你好运 index.php与上题一样&#xff0c;使用POST请求的方法向flag.php传递参数 //flag.php页面源码 <?phperror_reporting(0);if($_SERVER["REMOTE_ADDR&…

2024“电工杯”数学建模A题《园区微电网风光储协调优化配置》思路和代码分享

A 题&#xff1a;园区微电网风光储协调优化配置 这个题目整体就是一个优化问题&#xff0c;可以采用MatlabYalmipGurobi求解器进行求解&#xff0c;持续更新中&#xff0c;敬请关注&#xff01;&#xff01; 园区微电网由风光发电和主电网联合为负荷供电&#xff0c;为了尽量提…

【Docker】Linux 系统(CentOS 7)安装 Docker

文章目录 对 VMware 软件的建议官方说明文档Docker安装卸载旧版本docker设置仓库开始安装 docker 引擎最新版 Docker 安装指定版本 Docker 安装&#xff08;特殊需求使用&#xff09; 启动 Docker查看 Docker 版本查看 Docker 镜像设置 Docker 开机自启动 验证开机启动是否生效…

牛皮!亚信安全《2024国家级攻防演练100+必修高危漏洞合集》.pdf

上次分享了2023攻防演练高危漏洞&#xff0c;获得了很多粉丝的好评。 今天再分享一份由亚信安全服务团队结合自身的“外部攻击面管理”服务能力和专业的红队能力&#xff0c;最新发布的《2024攻防演练必修高危漏洞合集》&#xff0c;一共108页&#xff0c;非常详细&#xff0c…

windows、mac、linux中node版本的切换(nvm管理工具),解决项目兼容问题 node版本管理、国内npm源镜像切换

文章目录 在工作中&#xff0c;我们可能同时在进行2个或者多个不同的项目开发&#xff0c;每个项目的需求不同&#xff0c;进而不同项目必须依赖不同版本的NodeJS运行环境&#xff0c;这种情况下&#xff0c;对于维护多个版本的node将会是一件非常麻烦的事情&#xff0c;nvm就是…

014_C标准库函数之<stdio.h>

【背景】 今天这个主要说的是<stdio.h>头文件&#xff0c;大家众所周知&#xff0c;这个是我们学习C语言时第一个接触到的头文件了&#xff0c;那么为什么我不一开始就介绍这个头文件呢&#xff1f;我觉得有两个原因&#xff0c;如下&#xff1a; 1.一开始大家的编程思…

spring boot整合j2cache 关闭二级缓存

我们整合了 j2cache 的项目启动 日志会输出 一级缓存 二级缓存 一级是 EhCacheProvider 二级是 SpringRedisProvider 如果 我们不想用二级缓存 在 j2cache.properties 中 加上 j2cache.12-cache-open配置 值为 true/false true是启用二级缓存 false 是不起用 默认 true 所以 …

其它高阶数据结构⑦_Skiplist跳表_概念+实现+对比

目录 1. Skiplist跳表的概念 2. Skiplist跳表的效率 3. Skiplist跳表的实现 3.1 力扣1206. 设计跳表 3.2 Skiplist的初始化和查找 3.3 Skiplist的增加和删除 3.4 Skiplist的源码和OJ测试 4. 跳表和平衡搜索树/哈希表的对比 本篇完。 1. Skiplist跳表的概念 skiplist是…

AWTK实现汽车仪表Cluster/DashBoard嵌入式GUI开发(七):快启

前言: 汽车仪表是人们了解汽车状况的窗口,而仪表中的大部分信息都是以指示灯形式显示给驾驶者。仪表指示灯图案都较为抽象,对驾驶不熟悉的人在理解仪表指示灯含义方面存在不同程度的困难,尤其对于驾驶新手,如果对指示灯的含义不求甚解,有可能影响驾驶的安全性。即使是对…

人工智能应用-实验8-用生成对抗网络生成数字图像

文章目录 &#x1f9e1;&#x1f9e1;实验内容&#x1f9e1;&#x1f9e1;&#x1f9e1;&#x1f9e1;代码&#x1f9e1;&#x1f9e1;&#x1f9e1;&#x1f9e1;分析结果&#x1f9e1;&#x1f9e1;&#x1f9e1;&#x1f9e1;实验总结&#x1f9e1;&#x1f9e1; &#x1f9…

YOLOv10论文解读:实时端到端的目标检测模型

《博主简介》 小伙伴们好&#xff0c;我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源&#xff0c;可关注公-仲-hao:【阿旭算法与机器学习】&#xff0c;共同学习交流~ &#x1f44d;感谢小伙伴们点赞、关注&#xff01; 《------往期经典推…

C#【进阶】特殊语法

特殊语法、值和引用类型 特殊语法 文章目录 特殊语法1、var隐式类型2、设置对象初始值3、设置集合初始值4、匿名类型5、可空类型6、空合并操作符7、内插字符串8、单句逻辑简略写法 值和引用类型1、判断值和引用类型2、语句块3、变量的生命周期4、结构体中的值和引用5、类中的值…

C++笔试强训day32

目录 1.素数回文 2.活动安排 3.合唱团 1.素数回文 链接https://www.nowcoder.com/practice/d638855898fb4d22bc0ae9314fed956f?tpId290&tqId39945&ru/exam/oj 现将其转化为回文数&#xff08;这里用字符串存储比较方便转化&#xff09;&#xff0c;然后判断是否为…

ASP.NET Core Identity框架介绍与使用

1 ASP.NET Core Identity框架 Identity &#xff08;标识&#xff09;框架&#xff1a;采用的是基于角色的访问控制策略&#xff08;Role-Based-Controll-Access&#xff09;&#xff0c;内置了对用户、角色等表的管理以及相关的接口&#xff0c;支持外部登录、2FA等。 Identit…

构建数字未来:探索Web3在物联网中的新视角

引言 随着Web3时代的来临&#xff0c;物联网技术正迎来一场新的变革。在这个数字化时代&#xff0c;Web3所带来的技术创新将为物联网的发展开辟新的视角。本文将深入探讨Web3在物联网领域的应用&#xff0c;揭示其在构建数字未来中的重要性和影响。 Web3与物联网的融合 区块链…

Golang项目代码组织架构实践

Golang在项目结构上没有强制性规范&#xff0c;虽然这给了开发者很大的自由度&#xff0c;但也需要自己沉淀一套可行的架构。本文介绍了一种项目布局&#xff0c;可以以此为参考设计适合自己的 Golang 项目组织模式。原文: Golang Project Layout Go 有很多强制的或是约定俗成的…

如何运用多媒体,打造企业实力展示厅?

企业文化、产品是其长期发展的根本所在&#xff0c;为此越来越多的企业开始选择运用多媒体互动&#xff0c;来打造企业多媒体展厅的方式&#xff0c;对企业文化、品牌形象、产品进行推广宣传&#xff0c;并在多媒体互动装置的支持下&#xff0c;能让客户能够快速且全面的了解企…

【设计模式】JAVA Design Patterns——Converter(转换器模式)

&#x1f50d;目的 转换器模式的目的是提供相应类型之间双向转换的通用方法&#xff0c;允许进行干净的实现&#xff0c;而类型之间无需相互了解。此外&#xff0c;Converter模式引入了双向集合映射&#xff0c;从而将样板代码减少到最少 &#x1f50d;解释 真实世界例子 在真实…