罗德里格斯公式

1.点乘

A ⃗ ⋅ B ⃗ = ∣ A ⃗ ∣ ∣ B ⃗ ∣ c o s ⟨ A ⃗ , B ⃗ ⟩ \vec{A} \cdot \vec{B} = \left | \vec{A} \right | \left | \vec{B} \right | cos\left \langle \vec{A}, \vec{B} \right \rangle A B = A B cosA ,B

  • 对应几何意义:向量 A ⃗ \vec{A} A 在向量 B ⃗ \vec{B} B 方向上投影与 ∣ B ⃗ ∣ \left | \vec{B} \right | B 的乘积,反应两个向量在方向上的相似度,结果越大越相似;
    请添加图片描述

2.叉乘

A ⃗ × B ⃗ = ∣ A ⃗ ∣ ∣ B ⃗ ∣ s i n ⟨ A ⃗ , B ⃗ ⟩ n ⃗ \vec{A} \times \vec{B} = \left | \vec{A} \right | \left | \vec{B} \right | sin\left \langle \vec{A}, \vec{B} \right \rangle \vec{n} A ×B = A B sinA ,B n

  • 其中 n ⃗ \vec{n} n A ⃗ \vec{A} A B ⃗ \vec{B} B 所构成平面的单位向量。
  • 对应几何意义:若以 A ⃗ \vec{A} A B ⃗ \vec{B} B 为边构成一个平行四边形,那么这两个向量外积的模长与这个平行四边形的面积相等;
    请添加图片描述

3.罗德里格斯公式的特殊情形

  • 如图所示,假设向量 k ⃗ \vec{k} k 为与Z轴重合的单位向量,向量 v ⃗ \vec{v} v 与X轴重合,向量 v ⃗ \vec{v} v 绕向量 k ⃗ \vec{k} k 旋转 θ \theta θ角度后,得到向量 v ⃗ r o t \vec{v}_{rot} v rot
    请添加图片描述

  • 那么,Y轴方向的单位向量为:
    Y ⃗ = k ⃗ × v ⃗ ∣ k ⃗ × v ⃗ ∣ \vec{Y} = \frac{\vec{k}\times \vec{v}}{|\vec{k}\times \vec{v}|} Y =k ×v k ×v

  • 而向量 k ⃗ \vec{k} k 和向量 v ⃗ \vec{v} v 垂直,并且向量 k ⃗ \vec{k} k 为单位向量,则:
    Y ⃗ = k ⃗ × v ⃗ ∣ k ⃗ × v ⃗ ∣ = k ⃗ × v ⃗ ∣ k ⃗ ∣ ∣ v ⃗ ∣ s i n ⟨ k ⃗ , v ⃗ ⟩ = k ⃗ × v ⃗ ∣ v ⃗ ∣ \vec{Y} = \frac{\vec{k}\times \vec{v}}{|\vec{k}\times \vec{v}|} = \frac{\vec{k}\times \vec{v}}{|\vec{k}| | \vec{v}| sin\left \langle \vec{k}, \vec{v} \right \rangle} = \frac{\vec{k}\times \vec{v}}{|\vec{v}|} Y =k ×v k ×v =k ∣∣v sink ,v k ×v =v k ×v

  • 那么旋转后的向量 v r o t v_{rot} vrot为:
    v ⃗ r o t = ∣ v ⃗ r o t ∣ c o s θ v ⃗ ∣ v ⃗ ∣ + ∣ v ⃗ r o t ∣ s i n θ Y ⃗ ∣ Y ⃗ ∣ \vec{v}_{rot} = |\vec{v}_{rot}|cos\theta \frac{\vec{v}}{|\vec{v}|} + |\vec{v}_{rot}|sin\theta \frac{\vec{Y}}{|\vec{Y}|} v rot=v rotcosθv v +v rotsinθY Y

  • 由于旋转不会改变向量模长,所以 ∣ v ⃗ ∣ = ∣ v ⃗ r o t ∣ |\vec{v}| = |\vec{v}_{rot}| v =v rot,向量 Y ⃗ \vec{Y} Y 为归一化后的单位向量,所以:
    v ⃗ r o t = c o s θ v ⃗ + s i n θ ( k ⃗ × v ⃗ ) \vec{v}_{rot} = cos\theta \vec{v} + sin\theta (\vec{k} \times \vec{v}) v rot=cosθv +sinθ(k ×v )


4.罗德里格斯公式的一般形式

  • 如图所示,向量 v ⃗ \vec{v} v 绕向量 k ⃗ \vec{k} k 旋转 θ \theta θ角度得到向量 v ⃗ r o t \vec{v}_{rot} v rot,其中,向量 k ⃗ \vec{k} k 为单位向量:
    在这里插入图片描述

  • 向量 v ⃗ \vec{v} v 可以表示成如下形式:
    v ⃗ = v ⃗ ∥ + v ⃗ ⊥ v ⃗ r o t = v ⃗ ∥ + v ⃗ r o t ⊥ \vec{v} = \vec{v}_{\parallel } + \vec{v}_{\perp } \\ \vec{v}_{rot} = \vec{v}_{\parallel} + \vec{v}_{rot\perp } v =v +v v rot=v +v rot

  • 由于向量 k ⃗ \vec{k} k 为单位向量,有:
    v ⃗ ∥ = ∣ v ⃗ ∣ c o s ⟨ v ⃗ , k ⃗ ⟩ k ⃗ ∣ k ⃗ ∣ = ∣ v ⃗ ∣ v ⃗ ⋅ k ⃗ ∣ v ⃗ ∣ ∣ k ⃗ ∣ k ⃗ ∣ k ⃗ ∣ = v ⃗ ⋅ k ⃗ ⋅ k ⃗ \vec{v}_{\parallel } = |\vec{v}|cos\left \langle \vec{v}, \vec{k} \right \rangle \frac{\vec{k}}{|\vec{k}|} = |\vec{v}| \frac{\vec{v} \cdot \vec{k}}{|\vec{v}||\vec{k}|}\frac{\vec{k}}{|\vec{k}|} = \vec{v} \cdot \vec{k} \cdot \vec{k} v =v cosv ,k k k =v v ∣∣k v k k k =v k k

  • 那么向量 v ⃗ \vec{v} v 在垂直方向分量为:
    v ⃗ ⊥ = v ⃗ − v ⃗ ∥ = v ⃗ − v ⃗ ⋅ k ⃗ ⋅ k ⃗ \vec{v}_{\perp } = \vec{v} - \vec{v}_{\parallel } = \vec{v} - \vec{v} \cdot \vec{k} \cdot \vec{k} v =v v =v v k k

  • v ⃗ ⊥ \vec{v}_{\perp } v 绕向量 k ⃗ \vec{k} k 旋转 θ \theta θ角度到向量 v ⃗ r o t ⊥ \vec{v}_{rot\perp } v rot等价于上面罗德里格斯公式的特殊情形,直接代入公式有:
    v ⃗ r o t ⊥ = c o s θ v ⃗ ⊥ + s i n θ ( k ⃗ × v ⃗ ⊥ ) = c o s θ ( v ⃗ − v ⃗ ⋅ k ⃗ ⋅ k ⃗ ) + s i n θ ( k ⃗ × v ⃗ ⊥ ) \vec{v}_{rot\perp } = cos\theta \vec{v}_{\perp } + sin\theta (\vec{k} \times \vec{v}_{\perp }) = cos\theta (\vec{v} - \vec{v} \cdot \vec{k} \cdot \vec{k}) + sin\theta (\vec{k} \times \vec{v}_{\perp }) v rot=cosθv +sinθ(k ×v )=cosθ(v v k k )+sinθ(k ×v )

  • 所以,旋转后向量 v ⃗ r o t \vec{v}_{rot} v rot为:
    v ⃗ r o t = v ⃗ ⋅ k ⃗ ⋅ k ⃗ + c o s θ ( v ⃗ − v ⃗ ⋅ k ⃗ ⋅ k ⃗ ) + s i n θ ( k ⃗ × v ⃗ ⊥ ) = c o s θ v ⃗ + ( 1 − c o s θ ) v ⃗ ⋅ k ⃗ ⋅ k ⃗ + s i n θ ( k ⃗ × v ⃗ ⊥ ) \vec{v}_{rot} = \vec{v} \cdot \vec{k} \cdot \vec{k} + cos\theta (\vec{v} - \vec{v} \cdot \vec{k} \cdot \vec{k}) + sin\theta (\vec{k} \times \vec{v}_{\perp }) \\ = cos\theta \vec{v} + (1 - cos\theta)\vec{v} \cdot \vec{k} \cdot \vec{k} + sin\theta(\vec{k} \times \vec{v}_{\perp }) v rot=v k k +cosθ(v v k k )+sinθ(k ×v )=cosθv +(1cosθ)v k k +sinθ(k ×v )

  • 由叉乘的几何意义可知, k ⃗ × v ⃗ ⊥ \vec{k} \times \vec{v}_{\perp } k ×v k ⃗ × v ⃗ \vec{k} \times \vec{v} k ×v 方向相同,都是向量 v ⃗ , k ⃗ \vec{v},\vec{k} v k 平面法向量方向,也即是图中Y轴方向,二者大小为:
    k ⃗ × v ⃗ ⊥ = ∣ k ⃗ ∣ ∗ ∣ v ⃗ ⊥ ∣ n ⃗ k ⃗ × v ⃗ = ∣ k ⃗ ∣ ∗ ( ∣ v ⃗ ∣ s i n ⟨ k ⃗ , v ⃗ ⟩ ) n ⃗ = ∣ k ⃗ ∣ ∗ ∣ v ⃗ ⊥ ∣ n ⃗ = k ⃗ × v ⃗ ⊥ \vec{k} \times \vec{v}_{\perp } = |\vec{k}|*|\vec{v}_{\perp }| \vec{n}\\ \vec{k} \times \vec{v} = |\vec{k}|*(|\vec{v}|sin\left \langle \vec{k}, \vec{v} \right \rangle) \vec{n} \\ = |\vec{k}|*|\vec{v}_{\perp }| \vec{n} \\ = \vec{k} \times \vec{v}_{\perp } k ×v =k v n k ×v =k (v sink ,v )n =k v n =k ×v

  • 因此,得到罗德里格斯公式的一般形式:
    v ⃗ r o t = c o s θ v ⃗ + ( 1 − c o s θ ) v ⃗ ⋅ k ⃗ ⋅ k ⃗ + s i n θ ( k ⃗ × v ⃗ ) \vec{v}_{rot} = cos\theta \vec{v} + (1 - cos\theta)\vec{v} \cdot \vec{k} \cdot \vec{k} + sin\theta(\vec{k} \times \vec{v}) v rot=cosθv +(1cosθ)v k k +sinθ(k ×v )


5.罗德里格斯公式的矩阵形式

  • 将旋转表示成一个矩阵 R R R的形式,即:
    v ⃗ r o t = R . v ⃗ \vec{v}_{rot} = R.\vec{v} v rot=R.v
    -(1) v ⃗ ⋅ k ⃗ ⋅ k ⃗ \vec{v} \cdot \vec{k} \cdot \vec{k} v k k
    v ⃗ ⋅ k ⃗ ⋅ k ⃗ = ( v ⃗ ⋅ k ⃗ ) ⋅ k ⃗ = k ⃗ ( v ⃗ ⋅ k ⃗ ) = k ⃗ ( k ⃗ T ⋅ v ⃗ ) = k ⃗ ( k ⃗ T ⋅ v ⃗ ) = ( k ⃗ k ⃗ T ) v ⃗ \vec{v} \cdot \vec{k} \cdot \vec{k} \\ = (\vec{v} \cdot \vec{k}) \cdot \vec{k} \\ = \vec{k}(\vec{v} \cdot \vec{k}) \\ = \vec{k}(\vec{k}^{T}\cdot \vec{v}) \\ = \vec{k}(\vec{k}^{T}\cdot \vec{v}) \\ = (\vec{k} \vec{k}^{T}) \vec{v} v k k =(v k )k =k (v k )=k (k Tv )=k (k Tv )=(k k T)v
  • (2) k ⃗ × v ⃗ \vec{k} \times \vec{v} k ×v
    k ⃗ × v ⃗ = k ⃗ ∧ v ⃗ \vec{k} \times \vec{v} = \vec{k}\wedge \vec{v} k ×v =k v
  • 代入得到:
    R = c o s θ I + ( 1 − c o s θ ) k ⃗ k ⃗ T + s i n θ k ⃗ ∧ R = cos\theta I + (1-cos\theta)\vec{k}\vec{k}^{T} + sin\theta\vec{k}\wedge R=cosθI+(1cosθ)k k T+sinθk
  • 由于 t r ( I ) = 3 , t r ( k ⃗ k ⃗ T ) = ∣ ∣ k ⃗ ∣ ∣ = 1 , t r ( k ⃗ ∧ ) = 0 tr(I) = 3,tr(\vec{k}\vec{k}^{T})=||\vec{k}|| = 1,tr({\vec{k}\wedge})=0 tr(I)=3tr(k k T)=∣∣k ∣∣=1,tr(k )=0,那么:
    t r ( R ) = 3 c o s θ + ( 1 − c o s θ ) = 2 c o s θ + 1 θ = a r c c o s ( t r ( R ) − 1 2 ) tr(R)=3cos\theta +(1-cos\theta) = 2cos\theta + 1 \\ \theta = arccos(\frac{tr(R)-1}{2}) tr(R)=3cosθ+(1cosθ)=2cosθ+1θ=arccos(2tr(R)1)

6.参考资料

  • [1] 罗德里格斯公式推导
  • [2] 向量点乘和叉乘的意义

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

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

相关文章

众佰诚:抖音店铺开网店前期需要投入多少

随着互联网的迅猛发展,电子商务已经成为了商业领域中的一股不可忽视的力量。而在电子商务中,抖音店铺已经成为了一个备受关注的平台,吸引了众多创业者和商家的关注。那么,在开设抖音店铺并转型为网店之前,究竟需要投入…

SVN的基本使用

一、SVN介绍 SVN(Subversion)是一个开源的版本控制系统,它专门用于管理文件和目录的变更。SVN 提供了一种集中式的版本控制方案,其中有一个中央仓库存储所有文件的历史记录和变更。 SVN使用方式相对简单,可以通过命令…

ROS 基础教程

欢迎访问我的博客首页。 ROS 基础教程 1.urdf 文件1.1 在 Rviz 中显示 urdf1.1.1 定义 urdf1.1.2 在 Rviz 中查看 urdf 1.2 在 Gazebo 中显示 urdf1.2.1 定义 urdf1.2.2 在 Gazebo 中查看 urdf 2.建图-仿真2.1 模型 1.urdf 文件 假设我们的工作空间是 ws_ros。我们自己实现的包…

有效保护敏感数据的最佳实践

在当今数据驱动的环境中,数据就是力量,组织仍然高度关注如何利用其数据进行 BI、分析和其他业务驱动计划。 事实上,最近的研究表明,数据领导者的主要动机是对高质量分析洞察的需求,而不是合规性。 然而,…

Centos7原生hadoop环境,搭建Impala集群和负载均衡配置

Centos7原生hadoop环境,搭建Impala集群和负载均衡配置 impala介绍 Impala集群包含一个Catalog Server (Catalogd)、一个Statestore Server (Statestored) 和若干个Impala Daemon (Impalad)。Catalogd主要负责元数据的获取和DDL的执行,Statestored主要负…

greenhills compiler 2021.1.4 for x86 Linux

greenhills compiler 2021.1.4 for x86 Linux 2692407267qq.com,更多内容请见http://user.qzone.qq.com/2692407267/

ipad触控笔有必要买原装吗?ipad2023手写笔推荐

目前,在无纸教学、无纸办公的大背景下,电容笔得到了广泛的关注。只是,对于这两支电容笔的不同之处,不少人并不是很清楚。其实这两种电容笔都很好区分,第一种是主动电容笔,也就是我们常用的电容式屏幕&#…

JavaWeb开发-06-SpringBootWeb-MySQL

一.MySQL概述 1.安装、配置 官网下载地址:https://dev.mysql.com/downloads/mysql/ 2.数据模型 3.SQL简介 二.数据库设计-DDL 1.数据库 官网:http:// https://www.jetbrains.com/zh-cn/datagrip/ 2.表(创建、查询、修改、删除) #…

前端react 18.2整合ckeditor富文本编辑器——配置插件、自定义toolbar工具栏

文章目录 ⭐前言⭐引入ckeditor⭐npm 包引入⭐cdn资源引入 ⭐自定义插件💖 自定义yma16配置插件 ⭐总结⭐结束 ⭐前言 大家好,我是yma16,本文分享关于前端react整合ckeditor——配置插件、自定义toolbar工具栏。 react系列往期文章&#xff…

SpringBoot使用@Async异步注解

首先,想一想为什么使用异步线程? 举个例子: 当我们请求这个接口的时候,在接口调用了method这个方法 然而被调用的方法执行了一个线程睡眠三秒 因为method方法睡眠了三秒钟,所以这个接口响应的时间肯定是大于三秒。因为接口是从上往下执行的,首先会在控制台输出一…

UE5读取json文件

一、下载插件 在工程中启用 二、定义读取外部json文件的函数,参考我之前的文章 ue5读取外部文件_艺菲的博客-CSDN博客 三、读取文件并解析为json对象 这里Load Text就是自己定义的函数,ResourceBundle为一个字符串常量,通常是读取的文件夹…

Super Marker插件——标记资源,提高效率

插件介绍: 这是一款可以给资源添加颜色或图标标记📌的插件,当资源文件比较多的时候,颜色标记可以让你一眼定位到要使用的资源,提高开发效率。 插件地址: Cocos商店:https://store.cocos.com/a…

nginx SseEmitter 长连接

1、问题还原: 在做openai机器人时,后台使用 SseEmitterEventSource 实现流式获取数据,前端通过 EventSourcePolyfill 函数接收后端的数据,在页面流式输出到页面,做成逐字打稿的效果。本地测试后,可以正常获…

如何用好免费的ChatGPT

如何用好免费的ChatGPT 前言ChatGPT使用入口在线体验地址:点我体验 ChatGPT介绍ChatGPT初级使用技巧初级使用技巧:清晰明了的问题表达 ChatGPT中级使用语法中级使用语法:具体化问题并提供背景信息 ChatGPT高级使用高级使用:追问、…

python随手小练3

题目: 写出一个判断闰年的python代码: 闰年的条件: 如果N能够被4整除,并且不能被100整除,则是闰年 或者:N能被400整除,也是闰年 即:4年一润并且百年不润,每400年再润一…

怒刷LeetCode的第14天(Java版)

目录 第一题 题目来源 题目内容 解决方法 方法一:动态规划 方法二:栈 方法三:双指针 第二题 题目来源 题目内容 解决方法 方法一:二分查找 方法二:线性扫描 方法三:递归 第三题 题目来源 …

深度解析React 18应用性能提升

众所周知,React 18 引入的一个重要特性就是并发功能,从根本上改变了 React 应用程序的渲染方式。本文将带大家一同探讨这些最新功能的具体作用,特别是如何提高应用程序性能。 一、主线程与长任务 当我们在浏览器中运行 JavaScript 时,JS 引擎会在单线程环境下执行代码内容…

2、RocketMQ消息的分类

一、普通消息 1 消息发送分类 Producer对于消息的发送方式也有多种选择,不同的方式会产生不同的系统效果。 同步发送消息 同步发送消息是指,Producer发出⼀条消息后,会在收到MQ返回的ACK之后才发下⼀条消息。该方式的消息可靠性最高&#xff…

Python 运行代码

一、Python运行代码 可以使用三种方式运行Python,如下: 1、交互式 通过命令行窗口进入 Python 并开始在交互式解释器中开始编写 Python 代码 2、命令行脚本 可以把代码放到文件中,通过python 文件名.py命令执行代码,如下&#xff…

Android进阶之路 - 盈利、亏损金额格式化

在金融类型的app中,关于金额、数字都相对敏感和常见一些,在此仅记录我在金融行业期间学到的皮毛,如后续遇到新的场景也会加入该篇 该篇大多采用 Kotlin 扩展函数的方式进行记录,尽可能熟悉 Kotlin 基础知识 兄弟 Blog StringUti…