在3d世界中,我们需要不停的在各个空间里面转换坐标,比如把物体由模型空间转化到世界空间,把世界空间中的点转换到摄像机的视图空间。我们知道,坐标转换可以用向量与一个转换矩阵相乘来达到转换目的。但要注意的是如果选择的是行向量,则是矩阵放在右边相乘,如果是列向量,则需要把矩阵放在向量左边相乘。如果不考虑位移,则我们可以用一个3X3矩阵来表示旋转或者缩放操作。

如果我们用行向量来表示某个模型空间中的某个点p( pxpy pz),假设模型经过旋转后,新的轴在世界空间中表示为 r(表示左右轴),u(表示向上的轴)f(表示向前的轴),则旋转矩阵为

rx ry rz

ux uy uz

fx fy fz

p与矩阵相乘后我们得到新的x点为 px*rx+py*ux+pz*fx,也就是p与旋转矩阵的列向量的点积。向量的点积也可以理解为一个向量在一个向量上面的投影。如果我们从列的角度来观察刚才的旋转矩阵,其实我们可以发现第一列其实是原来的r轴向相反的方向旋转后的新的r轴。同理第二列第三列相同。这样我们就不难理解了。一个模型旋转一个角度,我们可以让模型不动,让坐标轴沿着相反的方向旋转相同的角度。旋转后,每列就是坐标轴新的向量表示。点与旋转矩阵相乘,其实就是原来的点在新的坐标轴上面的投影。

在把所有的模型都转换到世界坐标空间后,我们需要转到到视图空间,假定我们知道摄像机的从模型空间到世界空间的转换矩阵就是上面的旋转矩阵,要把物体转换到相机空间,就需要上面矩阵的逆,正交矩阵的逆可以用该矩阵的转置矩阵来表示。所以变换矩阵变为

rxux fx

ry  Uy  fy

rz uz  fz

世界空间中的某点p与该矩阵相乘,则得到(p*r  ,p*u  ,p*f),从这里可以看到世界空间的点转换到视图空间,其实就是点在相机各个坐标上面的投影。这里没有考虑位置转换,只考虑3X3矩阵是为了简化思考。

空间坐标乘旋转矩阵_向量坐标转换、旋转矩阵以及视图转换相关推荐

  1. 空间坐标乘旋转矩阵_坐标变换(4)—旋转矩阵

    1. 群 群(Group)是一种集合加上一种运算的代数结构.我们把集合记作 ,运算记作 , 那么群可以记作 .群要求这个运算满足以下几个条件:封闭性: . 结合律: . 幺元: 逆: 2. speci ...

  2. 方向向量转欧拉角_【姿态表示】旋转向量、旋转矩阵、欧拉角、四元数

    1. 旋转矩阵与旋转向量旋转矩阵(Rotation Matrix)用 9 个量描述旋转的3个自由度,有冗余: 9 个量是有约束的:必须是正交矩阵,且行列式为 1 旋转向量(Rotation Vecto ...

  3. 【自动驾驶】30.c++实现基于eigen实现欧拉角(RPY), 旋转矩阵, 旋转向量, 四元数之间的变换(附代码)

    矩阵的使用可参考系列博客:点击此处 原文链接:基于eigen实现欧拉角(RPY), 旋转矩阵, 旋转向量, 四元数之间的变换. 也可以参考另一篇博客:eigen 中四元数.欧拉角.旋转矩阵.旋转向量. ...

  4. 旋转向量与旋转矩阵的相互转化

    公式 1. 旋转向量求解旋转矩阵 当刚体在三维空间中运动时,如果已知旋转向量,根据罗德里格斯公式是比较容易求得旋转矩阵的. 罗德里格斯公式如图所示 其中,I 是单位矩阵,n 是旋转向量的单位向量, t ...

  5. 三维坐标变换(旋转矩阵旋转向量)

    矩阵运算显然是计算机三维坐标变换最简单方便的计算方法,因此在 opencv.opengl.工业机器人等开发中,提到位姿旋转变换,多半用的是旋转矩阵.然而,用矩阵来表示一个旋转关系有两个缺点: 首先,通 ...

  6. 罗德里格斯公式推导(轴角与旋转矩阵的关系)以及四元数与旋转向量、旋转矩阵、欧拉角之间的转换关系

    罗德里格斯公式推导(轴角与旋转矩阵的关系) 意义:罗德里格斯公式表示旋转向量到旋转矩阵之间爱你的转换关系 旋转向量:一个向量,方向与旋转轴一致,长度等于旋转角度 空间中任意旋转都可以用一个旋转轴和一个 ...

  7. 已知旋转矩阵求角度_如何推导旋转矩阵

    极坐标系和直角坐标系是等价的,在极坐标系下,一个点可以表示为(r,θ),在直角坐标系下,表示为(x,y).选取哪种坐标系是看哪种坐标系比较方便,在直角坐标系下处理直线.平移等非常方便:在极坐标系下,旋 ...

  8. 旋转矩阵、欧拉角、四元数理论及其转换关系

    旋转矩阵.欧拉角.四元数理论及其转换关系 author@jason_ql(lql0716) http://blog.csdn.net/lql0716 1.概述 旋转矩阵.欧拉角.四元数主要用于表示坐标 ...

  9. 语言转4字节数据整型_R语言与RGui平台_数据类型_向量_4

    计算机语言RGui平台上的R语言__数据类型_向量_4 R语言进阶4_数据类型_向量1 咱们而可以从自然语言(汉语.英.法.俄.德.日.拉丁.伊斯兰.等等)的基本特征来看--词汇.句子.段落.结构.文 ...

最新文章

  1. RxJava 实现模糊搜索
  2. C/C++指向指针的指针
  3. Hadoop(HDFS、YARN、HBase、Hive和Spark等)默认端口表
  4. linux内核模块编译
  5. 0-100之间的素数、判断素数的基本和优化方法
  6. spring cloud入门_Spring Boot 2.x基础教程:快速入门
  7. 全国一等奖,他的学习之路。
  8. 最大化_基于最大化互信息的学习目标
  9. 在WPF中处理Windows消息
  10. 使用 rose 将 c++代码转换为 uml 类图
  11. http://syy7.com/a/33.php,CVE-2020-7062
  12. 《跟唐老师学习云网络》 - 什么是VLAN和VXLAN
  13. 能买到大学考的英语计算机证吗,大学生不要盲目考证书,真正的硬通货是它,适用于所有专业的学生...
  14. java实验报告实验思路_20145307第一周JAVA实验报告
  15. wincc中c语言做变量自增,在WinCC中如何利用C动作实现变量自动加1-工业支持中心-西门子中国...
  16. 复杂网络 社交网络_通过角色的动态社交网络探索哈利·波特
  17. 安卓手机 ADB 操作指令
  18. Mac系统如何一键返回桌面?
  19. Requests: 1, Fetched: 0, Skipped: 0, Processed: 0
  20. java中的12的意思_在外壳中,“ 2&1”是什么意思?

热门文章

  1. 2022年六安市实验室、六安市技术创新中心申报条件、流程、材料指南
  2. 浅谈node环境下的Sass以及gulp工具下的Sass
  3. 使用letsencrypt获取免费https证书步骤
  4. 大学生志愿者管理信息系统设计与实现(论文+源码)_kaic
  5. 成绩登记表(网页设计实验)
  6. 小型步进电机驱动芯片的应用和介绍如HR8833
  7. 写给青云十周年的散文诗
  8. Python常用库---pycurl
  9. Jmeter使用教程--调用其他接口使用账号密码登录
  10. lxd容器运行Android,对于启动Linux时自动启动 LXD 容器的方法解析