推导2维镜像变换(Reflection Transform)的公式

news2024/11/13 12:43:59

我们知道2维的旋转变换公式为
Q = ( cos ⁡ ( θ ) sin ⁡ ( θ ) − sin ⁡ ( θ ) cos ⁡ ( θ ) ) Q=\left( \begin{matrix} \cos \left( \theta \right)& \sin \left( \theta \right)\\ -\sin \left( \theta \right)& \cos \left( \theta \right)\\ \end{matrix} \right) Q=(cos(θ)sin(θ)sin(θ)cos(θ))
如果 y = Q T x y=Q^{T}x y=QTx,那么逆时针旋转x就得到了y。旋转矩阵可以看我的其他博客3维旋转的3种表示方法之间的关系,还有从几何与代数的角度推算坐标旋转变换矩阵(以2维为例)

而镜像变换,是点x以某个向量为轴,得到其镜像y。
Q = ( cos ⁡ ( θ ) sin ⁡ ( θ ) sin ⁡ ( θ ) − cos ⁡ ( θ ) ) Q=\left( \begin{matrix} \cos \left( \theta \right)& \sin \left( \theta \right)\\ \sin \left( \theta \right)& -\cos \left( \theta \right)\\ \end{matrix} \right) Q=(cos(θ)sin(θ)sin(θ)cos(θ))
该镜像变换以向量 ( c o s ( θ / 2 ) , s i n ( θ / 2 ) ) (cos(\theta/2),sin(\theta/2)) (cos(θ/2),sin(θ/2))为轴

镜像变换是对称矩阵,因此 y = Q T x = Q x y=Q^{T}x=Qx y=QTx=Qx

该镜像变换矩阵是怎么来的呢,下面进行推导。假设需要镜像的点为A ( x 0 , y 0 ) (x_0,y_0) (x0,y0),镜像后得到的点为B ( x 1 , y 1 ) (x_1,y_1) (x1,y1)
那么就有下面两个约数(1) A B → \overrightarrow{AB} AB 垂直与向量,(2)A到向量的距离与B到向量的距离相等,并且方向相反。
根据条件(1)
( x 0 − x 1 ) cos ⁡ θ 2 + ( y 0 − y 1 ) sin ⁡ θ 2 = 0 \left( x_0-x_1 \right) \cos \frac{\theta}{2}+\left( y_0-y_1 \right) \sin \frac{\theta}{2}=0 (x0x1)cos2θ+(y0y1)sin2θ=0

向量 ( c o s ( θ / 2 ) , s i n ( θ / 2 ) ) (cos(\theta/2),sin(\theta/2)) (cos(θ/2),sin(θ/2))可以看做一条直线,该直线为
− sin ⁡ θ 2 x + cos ⁡ θ 2 y = 0 -\sin \frac{\theta}{2}x+\cos \frac{\theta}{2}y=0 sin2θx+cos2θy=0
A到该直线距离为
f 1 = − sin ⁡ θ 2 x 0 + cos ⁡ θ 2 y 0 f1=-\sin \frac{\theta}{2}x_0+\cos \frac{\theta}{2}y_0 f1=sin2θx0+cos2θy0
B到该直线距离为
f 2 = − sin ⁡ θ 2 x 1 + cos ⁡ θ 2 y 1 f2=-\sin \frac{\theta}{2}x_1+\cos \frac{\theta}{2}y_1 f2=sin2θx1+cos2θy1
条件(2)为
f 1 = − f 2 f1=-f2 f1=f2
根据解这两个方程,就可以得到上面的镜像变换矩阵Q,我用mathematica验证,确实如此

在这里插入图片描述

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

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

相关文章

【java-数据结构18-队列】

上篇文章,我们已经完成了栈的学习,下面,我们将进行队列的学习,话不多说,上正文~ 1.队列 概念 队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有…

解决:java.util.concurrent.RejectedExecutionException

一 发现RejectedExecutionException错误 今天查看服务器的时候发现了一些java.util.concurrent.RejectedExecutionException错误,这个是由于线程池里的线程忙不过来报出的。如下图: 像这种 RejectedExecutionException 错误,表明在Java应…

捷报!恒瑞医药ADC创新药SHR-A1921卵巢癌适应症拟纳入突破性治疗品种公示

近日,恒瑞医药自主研发的TROP-2抗体偶联药物(antibody-drug-conjugate, ADC)注射用SHR-A1921用于治疗铂耐药复发上皮性卵巢癌、输卵管癌或原发性腹膜癌适应症被国家药品监督管理局药品审评中心拟纳入突破性治疗品种公示名单。今年3月&#xf…

ssm缴税管理系统-计算机毕业设计源码70555

摘 要 随着互联网大趋势的到来,社会的方方面面,各行各业都在考虑利用互联网作为媒介将自己的信息更及时有效地推广出去,而其中最好的方式就是建立网络管理系统,并对其进行信息管理。由于现在网络的发达,缴税管理系统的…

【RAG论文】检索信息中的噪音是如何影响大模型生成的?

前些天看到的两篇论文,论文标题为: 《The Power of Noise Redefining Retrieval for RAG Systems》《How Easily do Irrelevant Inputs Skew the Responses of Large Language Models》 主要讲述了检索文档是如何影响大模型输出的以及相关实验结果&…

基于ssm+vue图书管理系统

基于ssmvue图书管理系统 ssm477图书管理系统 相关技术 javassmmysqlvueelementui

物业

用户报修 审核专员可以操作(前端)🆗 工程部可以看到不可以操作(前端)🆗 项目经理可以看到不可以操作(前端)🆗 经理可以看到不可以操作(前端)&…

计算机网络——TCP / IP 网络模型

OSI 七层模型 七层模型是国际标准化的一个网络分层模型,大体结构可以分成七层。每层提供不同的功能。 图片来源 JavaGuide 但是这样七层结构比较复杂,不太实用,所以有了 TCP / IP 模型。 TCP / IP 网络模型 TCP / IP 网络模型可以看作是 O…

视频截图软件,这几款截图神器收好!

在数字化时代,视频内容已经成为我们获取信息、娱乐休闲的主要方式之一。而在观看视频的过程中,我们总会遇到一些想要定格下来的精彩瞬间。此时,一款高效的视频截图软件就显得尤为重要。今天,就为大家推荐几款功能强大、操作简便的…

倩女幽魂手游攻略:搬砖赚银指南,2024新手必备!

倩女幽魂手游作为一款热门的多人在线角色扮演游戏,吸引了大量玩家。在游戏中,搬砖(即通过游戏中的活动和任务赚取虚拟货币,并换取实际收益)成为了许多玩家的选择。本文将为大家详细介绍如何在倩女幽魂手游中高效搬砖&a…

1.5.3 基于Java配置方式使用Spring MVC

本实战教程主要介绍了如何使用Java配置方式来使用Spring MVC框架。相较于XML配置方式,Java配置方式提供了一种更为简洁和灵活的配置方法。 项目创建与配置 创建一个Jakarta EE项目,并设置项目名称和位置。选择Jakarta EE 10版本,不添加依赖&a…

【webrtc】RtpToNtpEstimator:最小二乘法、ntp估计及c++实例

上一篇: 【webrtc】RtpToNtpEstimator:将 RTP 时间戳映射到 NTP 时间 分析了最小二乘法的实现及对rtp到ntp的映射计算的调用流程 基于最小二乘法进行估计 RtpToNtpEstimator::Estimate G:\CDN\rtcCli\m98\src\system_wrappers\source\rtp_to_ntp_estimator.cc RtpToNtpEstima…

kettle学习之子映射组件

映射组件就跟java中的函数方法一样,类似一个子流程。 练习开始 根据数据库表中的id查询出想要的字段,并把字段存到excel表中 一、表输入 二、子映射 映射输入规范,类似java方法中的形参 name vsxcd是方法返回的参数 三、excel输出 运行结果…

【Linux】线程操作

文章目录 前言一、线程相关操作函数1. pthread_create2. pthread_join3. pthread_exit4. pthread_cancel5. pthread_detach6. 示例代码 前言 在 Linux 中并不存在真正意义上的线程, 而是通过复用进程的结构来实现的, 叫做轻量级进程. 线程是一个进程内部的一个执行流, 而一个进…

LangChain实战技巧之三:关于Tool的一点拓展

(几乎)任一LLM在bind_tools时,都是习惯先定义一个Function或BaseTool,然后再bind(bind_tools)具体方式可参考我的这篇文章 AI菜鸟向前飞 — LangChain系列之十三 - 关于Tool的必知必会 但这里的tool未必需…

GC日志中的Metaspace

GC 日志中的 Metaspace used 20580K, capacity 21180K, committed 21248K, reserved 1067008K class space used 2594K, capacity 2752K, committed 2816K, reserved 1048576K 一、Metaspace介绍 知道jdk8之前有perm这一整块内存来存klass等信息,我们的参数里也…

Python 文件操作指南:使用 open 和 with open 实现高效读写

🍀 前言 博客地址: CSDN:https://blog.csdn.net/powerbiubiu 👋 简介 本系列文章主要分享文件操作,了解如何使用 Python 进行文件的读写操作,介绍常见文件格式的读取和写入方法,包括TXT、 CS…

vue 表格表头展示不下,显示。。。;鼠标悬浮展示全部

vue 表格表头展示不下&#xff0c;显示。。。&#xff1b;鼠标悬浮展示全部 <templateslot-scope"scope"slot"header"><span:title"临时证券类型"style"white-space:nowrap">{{ 临时证券类型 }}</span></templa…

老年人培聊助手:温暖心灵的智能陪伴

在快节奏的现代生活中&#xff0c;老年人常常感到孤独和寂寞。为了给他们带来更多的陪伴和温暖&#xff0c;我们推出了全新的老年人培聊助手智能体。 这款培聊助手智能体不仅是一个智能聊天工具&#xff0c;更是老年人生活中的贴心伙伴。它拥有自然流畅的语言交互能力&#xf…

一文详解SaaS增长模式:PLG、MLG、SLG哪种更适合你?

在SaaS&#xff08;软件即服务&#xff09;的领域中&#xff0c;增长策略的选择对于企业的成功至关重要。其中&#xff0c;PLG&#xff08;产品驱动增长&#xff09;、MLG&#xff08;市场驱动增长&#xff09;和SLG&#xff08;销售驱动增长&#xff09;是三种常见的策略&…