二维空间中的点绕原点的旋转矩阵是怎么来的?(内含视频讲解)

如是我闻: 如果直接看书的话,他会告诉你二维空间中点的旋转变换的定义是这样的。

R ( β ) = [ cos ⁡ ( β ) − sin ⁡ ( β ) sin ⁡ ( β ) cos ⁡ ( β ) ] \mathbf{R}(\beta) = \begin{bmatrix} \cos(\beta) & -\sin(\beta) \\ \sin(\beta) & \cos(\beta) \end{bmatrix} R(β)=[cos(β)sin(β)sin(β)cos(β)]

其中 β \beta β是按逆时针方向测量的旋转角度。

可是为什么是这样的呢?这矩阵是怎么来的呢?

二维空间中围绕原点的旋转矩阵是怎么来的

几何基础

在纸上可以画一下,在平面上有一点 P ( x , y ) P(x, y) P(x,y),你想将这个点围绕原点 O ( 0 , 0 ) O(0, 0) O(0,0)旋转某个角度 β \beta β。旋转是逆时针方向的。旋转后,点 P P P 的新位置称为 P ′ ( x ′ , y ′ ) P'(x', y') P(x,y)

从三角函数出发

考虑点 P P P 初始时与x轴的夹角为 α \alpha α,且 P P P 到原点的距离(即向量 O P OP OP的长度)是 r r r。根据三角函数,原始坐标 x x x y y y 可以表示为:

  • x = r cos ⁡ ( α ) x = r \cos(\alpha) x=rcos(α)
  • y = r sin ⁡ ( α ) y = r \sin(\alpha) y=rsin(α)

当我们逆时针旋转这个点 β \beta β 度后,新的夹角是 α + β \alpha + \beta α+β。因此,旋转后的坐标 x ′ x' x y ′ y' y 可以用新的角度来表示 (这里不明白可以去看直角坐标系与极坐标系的转换):

  • x ′ = r cos ⁡ ( α + β ) x' = r \cos(\alpha + \beta) x=rcos(α+β)
  • y ′ = r sin ⁡ ( α + β ) y' = r \sin(\alpha + \beta) y=rsin(α+β)

利用余弦和正弦的加法公式

我们可以应用余弦和正弦的加法公式来展开这两个表达式:

  • cos ⁡ ( α + β ) = cos ⁡ ( α ) cos ⁡ ( β ) − sin ⁡ ( α ) sin ⁡ ( β ) \cos(\alpha + \beta) = \cos(\alpha)\cos(\beta) - \sin(\alpha)\sin(\beta) cos(α+β)=cos(α)cos(β)sin(α)sin(β)
  • sin ⁡ ( α + β ) = sin ⁡ ( α ) cos ⁡ ( β ) + cos ⁡ ( α ) sin ⁡ ( β ) \sin(\alpha + \beta) = \sin(\alpha)\cos(\beta) + \cos(\alpha)\sin(\beta) sin(α+β)=sin(α)cos(β)+cos(α)sin(β)

将这些代入 x ′ x' x y ′ y' y 的表达式,我们得到:

  • x ′ = r cos ⁡ ( α ) cos ⁡ ( β ) − r sin ⁡ ( α ) sin ⁡ ( β ) x' = r \cos(\alpha)\cos(\beta) - r \sin(\alpha)\sin(\beta) x=rcos(α)cos(β)rsin(α)sin(β)
  • y ′ = r sin ⁡ ( α ) cos ⁡ ( β ) + r cos ⁡ ( α ) sin ⁡ ( β ) y' = r \sin(\alpha)\cos(\beta) + r \cos(\alpha)\sin(\beta) y=rsin(α)cos(β)+rcos(α)sin(β)

既然 x = r cos ⁡ ( α ) x = r \cos(\alpha) x=rcos(α) y = r sin ⁡ ( α ) y = r \sin(\alpha) y=rsin(α),我们可以简化上面的表达式为:

  • x ′ = x cos ⁡ ( β ) − y sin ⁡ ( β ) x' = x \cos(\beta) - y \sin(\beta) x=xcos(β)ysin(β)
  • y ′ = x sin ⁡ ( β ) + y cos ⁡ ( β ) y' = x \sin(\beta) + y \cos(\beta) y=xsin(β)+ycos(β)

这个变换意味着每个点在平面上的新位置是通过将其旧位置从原点旋转 β \beta β度获得的。这种旋转保持了点与原点之间的距离不变(即 r r r是不变的),但是改变了点相对于原始x轴的角度。

向量和矩阵表示

当然有了以上的方程式,我们可以用向量和矩阵表示这个方程组,

给定一个点 P P P 的坐标为 ( x , y ) (x, y) (x,y),我们可以将其表示为列向量:

P = [ x y ] \mathbf{P} = \begin{bmatrix} x \\ y \end{bmatrix} P=[xy]

当这个点逆时针旋转角度 β \beta β 后,新的坐标 P ′ P' P 可以通过以下矩阵运算得到:

P ′ = R ( β ) P \mathbf{P'} = \mathbf{R}(\beta) \mathbf{P} P=R(β)P

其中,旋转矩阵 R ( β ) \mathbf{R}(\beta) R(β)定义为:

R ( β ) = [ cos ⁡ ( β ) − sin ⁡ ( β ) sin ⁡ ( β ) cos ⁡ ( β ) ] \mathbf{R}(\beta) = \begin{bmatrix} \cos(\beta) & -\sin(\beta) \\ \sin(\beta) & \cos(\beta) \end{bmatrix} R(β)=[cos(β)sin(β)sin(β)cos(β)]

计算示例

将旋转矩阵乘以点 P P P 的坐标向量,我们得到:

P ′ = [ cos ⁡ ( β ) − sin ⁡ ( β ) sin ⁡ ( β ) cos ⁡ ( β ) ] [ x y ] = [ x cos ⁡ ( β ) − y sin ⁡ ( β ) x sin ⁡ ( β ) + y cos ⁡ ( β ) ] \mathbf{P'} = \begin{bmatrix} \cos(\beta) & -\sin(\beta) \\ \sin(\beta) & \cos(\beta) \end{bmatrix} \begin{bmatrix} x \\ y \end{bmatrix} = \begin{bmatrix} x \cos(\beta) - y \sin(\beta) \\ x \sin(\beta) + y \cos(\beta) \end{bmatrix} P=[cos(β)sin(β)sin(β)cos(β)][xy]=[xcos(β)ysin(β)xsin(β)+ycos(β)]

这就是旋转后的坐标 P ′ P' P,其中:

  • 第一行给出了新的 x 坐标 x ′ = x cos ⁡ ( β ) − y sin ⁡ ( β ) x' = x \cos(\beta) - y \sin(\beta) x=xcos(β)ysin(β)
  • 第二行给出了新的 y 坐标 y ′ = x sin ⁡ ( β ) + y cos ⁡ ( β ) y' = x \sin(\beta) + y \cos(\beta) y=xsin(β)+ycos(β)

所以其实旋转矩阵就是从方程组的矩阵表示里得来的

非常的有品

以上

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

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

相关文章

【npm】如何在不发布包的情况下,在本地调用并测试它

要在不发布到 npm 的情况下本地调用测试一个 npm 包,你可以使用 npm link。这使你能够在本地文件系统中链接到你的包,而不必每次进行更改后都重新发布它。 以下是使用 npm link 的一般步骤: 1、在包目录中运行 npm link: 在你的…

前端 JS 经典:图片裁剪上传原理

前言:图片裁剪一般都是用户选择头像时用到,现在很多插件都可以满足这个功能,但是我们不仅要会用插件,还要自己懂的裁剪原理。 1. 流程 流程分为:1. 预览本地图片 2. 选择裁剪区域 3. 上传裁剪图像 2. 如何预览图片 …

小熊家务帮day10-day12 门户管理(缓存,主页,定时任务)

门户管理 1 门户介绍1.1 介绍1.2 常用技术方案 2 缓存技术方案2.1 需求分析2.1.1 C端用户界面原型2.1.2 缓存需求2.1.3 使用的工具 2.2 项目基础使用2.2.1 项目集成SpringCache2.2.2 测试Cacheable需求Service测试 2.1.3 缓存管理器(设置过期时间)2.1.4 …

计算机毕业设计PySpark+Hadoop地震预测系统 地震数据分析可视化 地震爬虫 大数据毕业设计 Flink Hadoop 深度学习

基于Hadoop的地震预测的 分析与可视化研究 姓 名:____田伟情_________ 系 别:____信息技术学院___ 专 业:数据科学与大数据技术 学 号:__2011103094________ 指导教师:_____王双喜________ 年 月 日 …

sqli-labs 靶场 less-5、6 第五关和第六关:判断注入点、使用错误函数注入爆库名、updatexml()函数

SQLi-Labs是一个用于学习和练习SQL注入漏洞的开源应用程序。通过它,我们可以学习如何识别和利用不同类型的SQL注入漏洞,并了解如何修复和防范这些漏洞。Less 5 SQLI DUMB SERIES-5 判断注入点:1. 首先,尝试正常的回显内容&#x…

Hadoop3:MapReduce源码解读之Map阶段的TextInputFormat切片机制(3)

Job那块的断点代码截图省略,直接进入切片逻辑 参考:Hadoop3:MapReduce源码解读之Map阶段的Job任务提交流程(1) 5、TextInputFormat源码解析 类的继承关系 它的内容比较少 重写了两个父类的方法 这里关心一下泛型参数…

【Python报错】已解决Attributeerror: ‘list‘ object has no attribute ‘join‘( Solved)

解决Python报错:AttributeError: ‘list’ object has no attribute ‘join’ (Solved) 在Python中,字符串(str)对象有一个非常有用的join()方法,它允许你将序列中的元素连接(join)成一个字符串…

机器学习笔记 - 本地windows 11 + PyCharm运行stable diffusion流程简述

一、环境说明 硬件:本地电脑windows11、32.0 GB内存、2060的6G的卡。 软件:本地有一个python环境,主要是torch 2.2.2+cu118 二、准备工作 1、下载模型 https://huggingface.co/CompVishttps://huggingface.co/CompVis 进入上面的网址,我这里下载的是这个里面的 …

最新付会进群多群同时变现社群系统V3.5.3版本 详细教程+源码下载

市面1888最新付费进群多群同时变现系统V3.5.3版本 详细教程源码下载介绍: 续男粉变现,相亲群变现后 演化出来的最新多群同时变现系统 可同时进行40个群同时变现 可设置地域群,相亲,男粉变现等多种群 购买后包括详细的 域名服…

人工智能安全综述

文 | 华北电力大学 李建彬 谯婷 秦淑梅 李智勇 近年来,人工智能技术发展取得了长足的进步,在多个领域广泛应用,特别是以 ChatGPT 为代表的生成式人工智能技术开启了人工智能应用的新纪元。随着人工智能技术及应用的迅猛发展,也带…

Linux文件系统(操作系统的文件管理)

一.Linux系统的文件接口 我们先介绍下Linux系统俩种的文件接口&#xff0c;引出一些问题。 1.open&#xff08;&#xff09; 我们看下说明&#xff1a; #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h>int open(const char *pathname,…

HOW - 用 Typescript 编写一个比较好的 Class

目录 一、介绍二、示例2.1 示例类代码2.2 单元测试 一、介绍 代码格式统一。包括统一缩进和尽量使用清晰且统一风格的变量和函数命名注释和文档。编写必要且清晰的注释和文档使用让面试官眼前一亮的现代新特性&#xff0c;代码简洁。例如可选链&#xff08;Optional Chaining&…

《大道平渊》· 拾 —— 身心的“肥胖”与我们不知饥渴的病:追求中的丰盈与节制

《平渊》 拾 "水满则溢&#xff0c;月盈则亏。" 《道德经》有言&#xff1a;"水满则溢&#xff0c;月盈则亏"。 意思是&#xff1a;水满了就会溢出&#xff0c;月亮最圆的时候就会走向亏的状态。 这揭示了自然界和人类社会中一切事物的内在规律 —— 任…

[office] excel表格锁定计算公式的方法步骤 #经验分享#媒体#职场发展

excel表格锁定计算公式的方法步骤 Excel中经常需要使用到表格锁定公式的技巧&#xff0c;计算公式具体该如何锁定呢?接下来是小编为大家带来的excel表格锁定计算公式的方法&#xff0c;供大家参考。 excel表格锁定计算公式的方法 计算公式锁定步骤1&#xff1a;如图&#xff0…

Proxmox VE虚拟机与容器管理平台安装指南

上篇文章说了ESXI和Proxmox VE&#xff08;简称pve&#xff09;区别&#xff0c;由于需要从esxi5.迁移到PVE8.2&#xff0c;所以开始简单的在一个测试机上的部署个说明指南&#xff0c;以备无患。 一、引言 Proxmox VE是一款基于Debian Linux的完全开源平台&#xff0c;专为虚…

6-Maven的使用

6-Maven的使用 常用maven命令 //常用maven命令 mvn -v //查看版本 mvn archetype:create //创建 Maven 项目 mvn compile //编译源代码 mvn test-compile //编译测试代码 mvn test //运行应用程序中的单元测试 mvn site //生成项目相关信息的网站 mvn package //依据项目生成 …

【代码随想录】【算法训练营】【第30天】 [322]重新安排行程 [51]N皇后 [37]解数独

前言 思路及算法思维&#xff0c;指路 代码随想录。 题目来自 LeetCode。 day 30&#xff0c;周四&#xff0c;好难&#xff0c;会不了一点~ 题目详情 [322] 重新安排行程 题目描述 322 重新安排行程 解题思路 前提&#xff1a;…… 思路&#xff1a;回溯。 重点&…

023、键管理_数据库

dbsize、select、flushdb/flushall命令。 1.切换数据库 select dbIndexRedis默认配置中是有16个数据库: databases 16 select15选择最后一个数据库,不同库可以存在相同的键: 127.0.0.1:6379> set hello world #默认进到0号数据库 OK 127.0.0.1:6379> get hello &qu…

RabbitMQ--Hello World(基础详解)

文章目录 先决条件RabbitMQ 初识RabbitMQ--Hello World发送接收 更多相关内容可查看 先决条件 本教程假定 RabbitMQ 已安装并在标准端口 &#xff08;5672&#xff09; 上运行。如果你 使用不同的主机、端口或凭据&#xff0c;连接设置将需要 调整。如未安装可查看Windows下载…

【机器学习通用流程】

文章目录 一、机器学习概述1. 机器学习的定义2. 机器学习的分类3. 机器学习的应用实例 二、数据准备和预处理1. 数据采集2. 数据清洗3. 数据转换 三、选择合适的机器学习模型1. 常见的机器学习模型决策树&#xff08;Decision Trees&#xff09;支持向量机&#xff08;Support …