【转】矩阵变换坐标系 深入理解

转自:矩阵变换坐标系 深入理解 - 知乎

网址链接:从坐标系图中理解“空间变换”

小谈矩阵和坐标变换

矩阵坐标系变化理解

让我们从一个实际的例子入手:下图是一个用两维的笛卡尔坐标系表示的二维空间。

其中,黑色坐标系 x-y代表一个二维空间蓝色坐标系 i-j代表另外一个二维空间。已知蓝色坐标系轴在黑色坐标系下对应的值是i=(1,1), j=(-1,1),又知橙色向量 p 处在 i-j 空间中,其坐标值为(2,1)。现在的问题是,这个 被转换到黑色坐标系 x-y 空间下它的坐标值是什么?

解决这个问题一个最关键也最直接的想法是“向量分解与再合成”。

可以被分解到 i 和 j 两个方向,得到 p= 2i+j;同时 i 又可以分解到 x 和 y 两个方向,得到 i = x + y,另外 j 也可以分解得到 j = -x + y。于是,我们全部展开,就得到 p(i-j) = 2i + j = 2(x + y) + (-x + y) = x + 3y = p(x-y) 。

因此点 在 x-y 空间下的坐标值为(1,3)。


这种方法可以用来讨论更一般的情况。假设p点在 i-j 坐标系下为(k1,k2),在 x-y 坐标系下为(q1,q2)。同样地有基向量 i 对应在 x-y 空间中为(m1,m2);j 对应在 x-y 空间中为(n1,n2)。

于是我们有以下推导,

i = m1x + m2yj = n1x + n2y

于是,

p(i-j) = k1i + k2j

= k1(m1x + m2y) + k2(n1x + n2y)

= (k1m1 + k2n1)x + (k1m2 + k2n2)y

于是,

p(i-j) = (k1m1 + k2n1, k1m2 + k2n2)

= (q1, q2)

p(x-y)

得到,

q1 = k1m1 + k2n1

q2 = k1m2 + k2n2

变换成矩阵形式:

其中(k1,k2)是 i-j 空间下的坐标值,而(q1,q2)是 x-y 空间下的坐标值。中间的矩阵就是用来做转换的矩阵。从中我们可以发现,如果竖着来观察,向量(m1,m2)就是基向量 i 在 x-y 空间下的坐标值,而向量(n1,n2)则是基向量 j 在 x-y 空间下的坐标值。这个矩阵,实际上就是由空间 i-j 下的基向量在空间 x-y 下的坐标值构成的。

1 矩阵的行序和列序(也称行优先或列优先)仅仅是指矩阵的存储方式,即我们如果用一个4*4数组m存储矩阵,如果m[0][0]-m[0][3]连续存储了矩阵的第一行,那么就是行优先,反之就是列优先。无论是行优先还是列优先,它们代表的数学意义是相同的。
2 如果矩阵是行序,那么它的第一列(m[0][0],m[1][0],m[2][0])就代表X变换,第二列就是Y变换,第三列就是Z变换。
我们来看看为什么:
刚才提到矩阵把线性空间中的一个点给变换到另一个点,不妨称变换前的点为P1(x1,y1,z1),变换后的点为P2(x2,y2,z2):
那么根据线代中的矩阵乘法,P1 * M = P2展开就成了:
m00,m01,m02
(x1,y1,z1) * m10,m11,m12 = x1*m00+y1*m10+z1*m20+ x1*m01*
m20,m21, m22 y1*m11+z1*m21,x1*m02+y1*m12+z1*m22

所以:
x2 = x1*m[0][0] + y1*m[1][0] + z1*m[2][0];
y2 = x1*m[0][1] + y1*m[1][1] + z1*m[2][1];
z2 = x1*m[0][2] + y1*m[1][2] + z1*m[2][2];
看出什么了吗?
如果把一个行序矩阵(接下来讨论的都是行序矩阵,就省略行序二字了)的每一列分别用X,Y,Z三个矢量来表示,那么M就表示为:XYZ三根轴。
现在,矩阵M看起来是不是很像一个坐标系?而P1到P2的变换就是P1分别与X,Y,Z的点积!
也就是矩阵M是把P1从老坐标系变换到新坐标系,而矩阵的三列(三根轴)就分别代表了新坐标系的三根轴在老坐标系中的坐标!
而点积的几何意义其实就是求取投影!所以坐标变换的几何本质(刚才已经讨论过其代数本质),就是把一个点分别投影到三根轴上去而已!
再仔细想一想,P1在XYZ三根轴上的投影,不正是它在新坐标系下的坐标吗?这样一来,坐标变换是不是就太容易理解了呢?

综上理解得出:

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

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

相关文章

【转】坐标系变换矩阵推导

转自: 坐标系的变换矩阵推导 1.平移变换 假设存在点(x,y,z),将x移动a,y移动b,z移动c,到新的点(x′,y′,z′),则: 中间4x4的矩阵叫变换矩阵。可见,如果要平移坐标,要将坐…

【转】图形流水线中坐标变换详解:模型矩阵、视角矩阵、投影矩阵

转自:图形流水线中坐标变换详解:模型矩阵、视角矩阵、投影矩阵_sherlockreal的博客-CSDN博客_视角矩阵 图形流水线中坐标变换详解:模型矩阵、视角矩阵、投影矩阵 图形流水线中坐标变换过程模型矩阵:模型局部坐标系和世界坐标系之…

【转】C#开发PACS医学影像处理系统(二):界面布局之菜单栏

转自:C#开发PACS医学影像处理系统(二):界面布局之菜单栏 - 乔克灬叔叔 - 博客园 在菜单栏布局上,为了使用自定义窗体样式和按钮,我们需要先将窗体设置为无边框,然后添加一个Grid作为菜单栏并置顶,Vertical…

WF4.0 基础篇 (二十九) WorkflowInspectionServices

本文例子下载: http://files.cnblogs.com/foundation/WorkflowInspectionServicesSample.rar WorkflowInspectionServices 类 WorkflowInspectionServices可以得到流程中的Activity, 由于WF4.0的ActivityTree相对复杂,并不是象WF3.X的结构那样清晰, 在WF4.0中Activi…

【转】C#开发PACS医学影像处理系统(三):界面布局之工具栏

转自:https://www.cnblogs.com/Uncle-Joker/p/13650330.html 工具栏布局采用WPF中Grid作为容器,按钮采用自定义样式和图标,并采用Separator分割线: XAML设计器代码: 其中 Style"{StaticResource ButtonStyle}&…

WinCE6.0 修改开机Logo方法

中秋假期已过,回来继续该博文主题。今天讲解第二种方法,将 Logo 图片的数据写入到 Nand Flash 中,在启动初始化 LCD 的时候,从固定的地址将数据读出并填充到显示缓存中。实验平台:WinCE6.0Android6410 4.3寸CLD。以下内…

【转】DICOM开发工具总结

转自:DICOM开发工具总结_qimo601的专栏-CSDN博客 网上流行的DICOM协议开发工具: 1、DICOM开发类库主要有: (1)DCMTK(3.6.0), 官方下载网站,(如何安装编译DCMTK3.6.0) DCMTK实现了对DICOM图像…

【转】CT中的“层“与“排“的区别

转自:CT中的"层"与"排"的区别 自从离开医院,专业培训磁共振,有差不多5年时间没有接触CT了。影像技术及影像医学诊断说到底是一门经验技术累积学科,这种学科的特点就是熟能生巧,几年不碰&#xff0…

修改SMDK6410的调试串口为普通串口(wince系统)

环境: 飞凌OK6410A开发板, Windows CE6.0系统 最近在做GPRS通信,可是手头上的GPRS模块(Q2403A)是五线串口的(RXD、TXD、GND、RCS、CTS),老板又不愿买新的模块。所以考虑将调试串口CO…

【转】CTA图像

转自:CTA图像 CT检查在临床中应用十分广泛,CT以其扫描速度快,对骨头及钙化敏感而具有部分优势。 CTA是CT血管成像,是CT临床应用中一个非常重要的部分,由于血管及其背景软组织自然对比差,常规CT平扫往往难以…

大白话系列之C#委托与事件讲解(一)

从序言中,大家应该对委托和事件的重要性有点了解了吧,虽然说我们现在还是能模糊,但是从我的大白话系列中,我会把这些概念说的通俗易懂的。首先,我们还是先说说委托吧,从字面上理解,只要是中国人…

【转】医学影像处理相关知识整理(一)

转自:医学影像处理相关知识整理(一) - 知乎 Segmentation to RT structure 近日做医疗影像处理相关的内容,感慨于这方面资料不全、散碎,遂记录自己获得的一些资料以供日后查阅。 DICOM DICOM 是医学图像和相关信息…

【转】软件工程能力漫谈:比质量更重要的,是项目管理能力

转自:软件工程能力漫谈:比质量更重要的,是项目管理能力 | ArchSummit 章淼老师在软件工程能力方面,积累了多年的经验,这个话题他之前也分享过多次,整体上内容有修改调整。 章老师博士毕业后在清华待了 12…

【转】DICOM文件格式剖析(初识)

转自:DICOM文件格式剖析(初识)_MoreThinker的博客-CSDN博客_dicom格式 初识DICOM(适合初学者) 初识DICOM文件,发现网上的资料有点少,大部分的资料都不全,在这里做一下总结&#xf…

【转】进阶 JavaScript 必知的 33 个点【进阶必备】

转自:进阶 JavaScript 必知的 33 个点【进阶必备】 进阶 JavaScript 必知的 33 个点【进阶必备】 Original 前端小菜鸡之菜鸡互啄 前端开发爱好者 2022-04-11 08:32 收录于话题#javaScript进阶1个 点击下方“前端开发爱好者”,选择“设为星标” 第一…

【转】自动化构建、自动化部署发布一览

转自:自动化构建、自动化部署发布一览 - 知乎 在软件系统开发的过程中,一个项目工程通常会包含很多的代码文件、配置文件、第三方文件、图片、样式文件等等,是如何将这些文件有效的组装起来最终形成一个可以流畅使用的应用程序的呢&#xff…

承博士:让云计算落地生根的中国云计算平台

2010-01-22 09:48:41 [0评论 ] 金蝶中间件秉承自主创新,努力打造自主知识产权的云计算平台;金蝶Apusic云计算解决方案是为大型企业和组织提供私有云的解决方案,通过云计算中间件平台,为云计算提供落地的务实价值。金蝶中间件与国际厂商合作&…

Microsoft Windows CE .NET 中的中断体系结构

概述 通过 Microsoft Windows CE .NET,Microsoft 已经升级了 Windows CE 的中断体系结构。该操作系统 (OS) 所具有的处理共享中断的能力极大地扩展了 Windows CE .NET 支持许多中断体系结构的能力。本文从原始设备制造商 (OEM) 和应用程序开发人员的角度探讨了处理…

微软企业库5.0学习笔记(三十三)数据访问模块

前言 鉴于企业库5.0已经发布正式版,同时有广大读者的要求(臭屁一下,o(∩_∩)o...),后面文章的内容和代码将基于Enterprise Library5.0和Unity2.0来写,感谢大家的一贯支持。 正文 数据库访问模块都能实现哪些…

ARM中断分析之一:中断控制器和CPU、外设的关系

“中断控制器”也是CPU众多外设中的一个,不同的是,它一方面接收其它外设中断引脚的输入,另一方面,它会发出中断信号给CPU。下图是一张中断控制器外设的框图,s3c2410的框图。 为了把中断控制器、CPU、外设联系起来&…