点的旋转变换

情形一(active or alibi transformation主动变换)

在这里插入图片描述
在坐标系 x − y x-y xy中,点 p 1 p_1 p1逆时针旋转 α \alpha α后到达点 p 2 p_2 p2
p 1 p_1 p1 x − y x-y xy中的表示与 p 2 p_2 p2 x ′ − y ′ x'-y' xy中的表示一样, x ′ − y ′ x'-y' xy x − y x-y xy旋转逆时针旋转 α \alpha α后的新坐标系。
我们要求 p 2 p_2 p2 x − y x-y xy中的表示?

(以下讨论均在 x − y x-y xy中)
p 1 x = r c o s θ , p 1 y = r s i n θ p_1^x = rcos\theta, p_1^y = rsin\theta p1x=rcosθ,p1y=rsinθ
p 2 x = r c o s ( θ + α ) , p 2 y = r s i n ( θ + α ) p_2^x = rcos(\theta+\alpha), p_2^y = rsin(\theta+\alpha) p2x=rcos(θ+α),p2y=rsin(θ+α)
可以推出
p 2 x = p 1 x c o s α − p 1 y s i n α p_2^x = p_1^x cos\alpha - p_1^y sin\alpha p2x=p1xcosαp1ysinα
p 2 y = p 1 x s i n α + p 1 y c o s α p_2^y = p_1^x sin\alpha + p_1^y cos\alpha p2y=p1xsinα+p1ycosα
用矩阵表示
A = [ c o s α − s i n α s i n α c o s α ] A = \begin{bmatrix} cos\alpha & -sin\alpha \\ sin\alpha & cos\alpha \end{bmatrix} A=[cosαsinαsinαcosα]
p 1 = [ p 1 x , p 1 y ] p_1 = [p_1^x, p_1^y] p1=[p1x,p1y]
p 2 = [ p 2 x , p 2 y ] p_2 = [p_2^x, p_2^y] p2=[p2x,p2y]
p 2 = A p 1 p_2 = Ap_1 p2=Ap1

那么,假如我们已知 p 2 p_2 p2,我们要求 p 1 p_1 p1 x − y x-y xy中的表示?
p 1 = A − 1 p 2 p_1 = A^{-1} p_2 p1=A1p2
A = [ c o s α s i n α − s i n α c o s α ] A = \begin{bmatrix} cos\alpha & sin\alpha \\ -sin\alpha & cos\alpha \end{bmatrix} A=[cosαsinαsinαcosα]

情形二(passive or alias transformation被动变换)

https://en.wikipedia.org/wiki/Rotation_of_axes_in_two_dimensions
坐标不动,坐标系旋转
p p p不动, x ′ − y ′ x'-y' xy x − y x-y xy旋转逆时针旋转 α \alpha α后的新坐标系。
我们已知 p p p x − y x-y xy中的表示 [ p x , p y ] [p^x,p^y] [px,py],要求 p p p x ′ − y ′ x'-y' xy中的表示 [ p x ′ , p y ′ ] [p^{x'},p^{y'}] [px,py]

p x = r c o s θ , p y = r s i n θ p^x = rcos\theta, p^y = rsin\theta px=rcosθ,py=rsinθ
p x ′ = r c o s ( θ − α ) , p y ′ = r s i n ( θ − α ) p^{x'} = rcos(\theta - \alpha), p^{y'} = rsin(\theta - \alpha) px=rcos(θα),py=rsin(θα)
可以推出
p x ′ = p x c o s α + p y s i n α p^{x'} = p^x cos\alpha + p^y sin\alpha px=pxcosα+pysinα
p y ′ = − p x s i n α + p y c o s α p^{y'} = -p^x sin\alpha + p^y cos\alpha py=pxsinα+pycosα
用矩阵表示
A = [ c o s α s i n α − s i n α c o s α ] A = \begin{bmatrix} cos\alpha & sin\alpha \\ -sin\alpha & cos\alpha \end{bmatrix} A=[cosαsinαsinαcosα]
[ p x ′ , p y ′ ] T = A [ p x , p 1 y ] T [p^{x'}, p^{y'}]^T = A [p^x, p_1^y]^T [px,py]T=A[px,p1y]T

那么,假如我们已知 p p p x ′ − y ′ x'-y' xy中的表示 [ p x ′ , p y ′ ] [p^{x'}, p^{y'}] [px,py],要求 p p p x − y x-y xy中的表示 [ p x , p 1 y ] [p^x, p_1^y] [px,p1y]
[ p x , p 1 y ] T = A − 1 [ p x ′ , p y ′ ] T [p^x, p_1^y]^T = A^{-1}[p^{x'}, p^{y'}]^T [px,p1y]T=A1[px,py]T
A − 1 = [ c o s α − s i n α s i n α c o s α ] A^{-1} = \begin{bmatrix} cos\alpha & -sin\alpha \\ sin\alpha & cos\alpha \end{bmatrix} A1=[cosαsinαsinαcosα]

主动变换与被动变换的变换矩阵一样?这说明要想让点 p 1 p_1 p1变换至 p 2 p_2 p2可通过主动绕原点旋转点 p 1 p_1 p1实现,也可以 p 1 p_1 p1不动但旋转坐标系来实现,两者虽然结果一样,但所处的坐标系不一样。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

如何异地链接Pycharm服务器进行远程开发并实现与公司服务器资源同步

文章目录 一、前期准备1. 检查IDE版本是否支持2. 服务器需要开通SSH服务 二、Pycharm本地链接服务器测试1. 配置服务器python解释器 三、使用内网穿透实现异地链接服务器开发1. 服务器安装Cpolar2. 创建远程连接公网地址 四、使用固定TCP地址远程开发 本文主要介绍如何使用Pych…

Webm文件转MP4

WebM由Google提出,是一个开放、免费的媒体文件格式。WebM 影片格式其实是以 Matroska(即 MKV)容器格式为基础开发的新容器格式,里面包括了VP8影片轨和 Ogg Vorbis 音轨,其中Google将其拥有的VP8视频编码技术以类似BSD授…

Unity中URP下实现深度贴花(雾效支持和BRP适配)

文章目录 前言一、让我们的贴画支持雾效1、我们舍弃内部的MixFog方法2、使用 雾效混合因子 对最后输出颜色进行线性插值相乘 二、在Shader中,限制贴花纹理的采样方式1、申明 纹理 和 限制采样方式的采样器2、在片元着色器进行纹理采样 三、BRP适配1、C#脚本中&#…

算法——贪心法(Greedy)

贪心法 把整个问题分解成多个步骤,在每个步骤都选取当前步骤的最优方案,直到所有步骤结束;在每一步都不考虑对后续步骤的影响,在后续步骤中也不再回头改变前面的选择。不足之处: 贪心算法并不能保证获得全局最优解&…

用通俗易懂的方式讲解:内容讲解+代码案例,轻松掌握大模型应用框架 LangChain

本文介绍了 LangChain 框架,它能够将大型语言模型与其他计算或知识来源相结合,从而实现功能更加强大的应用。 接着,对LangChain的关键概念进行了详细说明,并基于该框架进行了一些案例尝试,旨在帮助读者更轻松地理解 L…

申请ZeroSSL泛域名域名证书 并部署阿里云测试

安装acme.sh 安装过程中可能会失败 多试几次就会成功 wget -O - https://raw.githubusercontent.com/acmesh-official/acme.sh/master/acme.sh | sh -s -- --install-online -m 你的邮箱gmail.com安装完成后重新加载 Bash: source ~/.bashrc然后也可以开启自动更…

若依基于sm-crypto实现前后端登录密码加密

上一节介绍了基于jsencrypt实现的密码加密解密登录功能,这次来介绍基于sm-crypto实现前后端登录密码加密,本次采用的是sm2进行的加密解密。 后端 首先从后端代码开始写起(因为公钥和私钥都是要从java代码中生成): 首先需要引入sm-crypto的j…

ubantu运维,nginx相关操作

1、使用 命令ps aux | grep nginx查找nginx 运行目录,如下图: 2、使用 ​​​​​​​命令cd /usr/sbin 切换到nginx 运行目录,如下图: 3、修改配置文件后,使用 nginx -t 命令测试nginx配置文件的语法是否正确&#x…

RTMP 视频数据封装

RTMP 协议 与HTTP(超文本传输协议)同样是一个基于TCP的Real Time Messaging Protocol(实时消息传输协议)。由Adobe Systems公司为Flash播放器和服务器之间音频、视频和数据传输开发的一种开放协议 。在国内被广泛的应用于直 播领域。HTTP默认端口为80,RTMP则为1935…

Python 安卓开发:Kivy、BeeWare、Flet、Flutter

kivy:https://github.com/kivy python-for-android :https://python-for-android.readthedocs.io/en/latest/ BeeWare:https://docs.beeware.org/en/latest/ Flet:https://github.com/flet-dev/flet 把 PySide6 移植到安卓上去&a…

如何使用网络测试仪构造特殊流量

为什么要仿真特殊流量 在现网中,网络流量时常伴随着突发,突发流量可能会造成网络的拥塞,从而产生丢包、抖动和时延,导致网络服务质量整体下降。面对宏观上的突发,通常采用在网络设备入向限速或者流量整形功能来消除突…

kotlin运行

1.使用android studio 由于我本身是做android的,android studio本身有内置kotlin的插件。但若只是想跑kotlin的程序,并不像和android程序绑在一起,可以创建一个kt文件,在里面写一个main函数,就可以直接运行kotlin程序…

MySQL第二次

作业要求: 作业代码实现: create database db_04 default charsetutf8mb4;use db_04;create table if not exists t_hero(id int primary key auto_increment,name varchar(20) not null unique,nickname varchar(50) not null unique,address varchar…

Vue面试之v-if与v-show的区别

Vue面试之v-if与v-show的区别 DOM渲染初始渲染性能切换开销标签配合源码实现 最近在整理一些前端面试中经常被问到的问题,分为vue相关、react相关、js相关、react相关等等专题,可持续关注后续内容,会不断进行整理~ 作为Vue中两种条件性渲染元…

Python 最新版本 3.12.1 环境配置(windows)

文章目录 python 3.12.1环境安装3.12.1 网盘下载3.12.1 官网下载 python 安装完成测试第一个 python 程序Hello Python python 3.12.1环境安装 3.12.1 网盘下载 python 3.12.1 百度网盘地址:https://pan.baidu.com/s/1SAcH_uH0T3DiERn6AZeQlg?pwd4242 提取码&a…

跟着cherno手搓游戏引擎【4】窗口抽象、GLFW配置、窗口事件

引入GLFW: 在vendor里创建GLFW文件夹: 在github上下载,把包下载到GLFW包下。 GitHub - TheCherno/glfw: A multi-platform library for OpenGL, OpenGL ES, Vulkan, window and input修改SRC/premake5.lua的配置:12、13、15、36…

阿里云服务器ECS介绍_高性能云服务器_为了无法计算的价值

阿里云高性能云服务器60%单实例最大性能提升,35Gbps内网带宽,网络增强&通用型云服务器、本地SSD型云服务器、大数据型云服务器、GPU异构型云服务器,阿里云百科aliyunbaike.com分享阿里云高性能云服务器: 阿里云高性能云服务器…

修改权限控制(chmod命令、chown命令)

1.chmod命令 功能:修改文件、文件夹权限(注意,只有文件、文件夹的所属用户或root用户可以修改) 语法:chmod [-R] 权限 参数 权限,要设置的权限,比如755,表示:rwxr-xr-x…

Python入门-面向对象

1.类和对象 是不是很熟悉?和Java一样,在Python中,都可以把万物看成(封装成)对象。它俩都是面向对象编程 1.1 查看对象数据类型 a 10 b 9.8 c helloprint(type(a)) print(type(b)) print(type(c))运行结果: D:\Python_Home\v…

自定义数据实现SA3D

SA3D:Segment Anything in 3D with NeRFs 实现了3D目标分割 原理是利用SAM(segment anything) 模型和Nerf分割渲染3D目标, SAM只能分块,是没有语义标签的,如何做到语义连续? SA3D中用了self-prompt, 根据前一帧的mask…