一、变换物体与变换坐标系

在讨论变换前,必须要搞清楚到底要变换什么。

考虑2D中的例子“将以物体顺时针旋转20度”。变换物体(本例中为旋转),以为这旋转物体上所有的点,这些点将被移动到一个新的位置。我们使用同一坐标系来描述变换前和变换后点的位置。

现在,和变换坐标系的概念进行比较。旋转坐标系时,物体上的点实际没有移动,我们只是在另一个坐标系中描述它的位置而已。

我们将证明这两种变换在某种意义上是等价的,但现在,先看看它们各自的优点

变换物体的用处非常明显。例如,为了渲染一辆车,必须将点从车的物体坐标系变换到世界坐标系,接着到摄像机坐标系。那么为什么还要变换坐标系呢?乍看起来,把坐标系旋转到这个奇怪的位置似乎并没有什么价值。观察下图就可以发现,其实旋转坐标系就能起到很好的作用。

下图展示了一把步枪,正在向汽车发射子弹,如左边的图所示,我们一开始就知道世界坐标系中枪的位置和子弹的弹道。现在,想象一下世界坐标系被旋转到和车的物体坐标系重合的位置,而与此同时保持车、枪、子弹弹道不动。这样,我们得到了枪和子弹弹道在车的物体坐标系中的坐标,接着可以作碰撞检测以检查子弹是否会击中汽车了。

当然,也可以将车旋转到世界坐标系,在世界坐标系中作碰撞检测,但这要花费更多的时间,因为车的模型可能有大量的顶点和三角形,计算量太大。现在,不必担心实际变换的细节问题,这正是本章的剩余部分要对付的。只需记住可以变换问题,也可以变换坐标系。某些情况下一种方法比另一种更合适。

对于两种变换保持一种概念上的区别还是有必要的,有些情况下需要进行物体变换,另外一些情况下则需要进行坐标系变换。然而,这种变换实际上是等价的,将物体变换一个量等价于将坐标系变换一个相反的量。

二、旋转

1.2D中的旋转

在2D环境中,物体只能绕某个点旋转,因为现在暂不考虑平移,这里我们进一步限制物体,使其只绕原点旋转。2D中绕原点的旋转只有一个参数:角度

,它描述了旋转量。逆时针旋转经常(不是必须)被认为是正方向,顺时针方向是负方向。下图展示了基向量 p,q绕原点旋转,得到新的基向量

现在我们知道了旋转后基向量的值,就可以以公式的形式构造矩阵如下。

2.3D中绕坐标轴的旋转

在3D场景中,绕轴旋转而不是点(此时,轴指的是旋转所绕的直线,不一定是笛卡尔坐标轴x,yz).再次声明,这里暂不考虑平移,所以只讨论旋转轴穿过原点的情况。

绕轴旋转

时,必须知道哪个方向被认为“正”,哪个方向被认为“负”,左手坐标系中定义此方向的规则为左手法则。首先,要明确旋转轴指向哪个方向。当然,旋转轴在理论上是无限延伸的,但我们还是要认为它有正端点和负端点。与笛卡尔坐标轴定义坐标系相同,左手法则是这样的:伸出左手,大拇指向上,其余四指弯曲。大拇指指向旋转轴的正方向,此时,四指弯曲的方向就是旋转的正方向。此时,四指弯曲的方向就是旋转的正方向,此时,四指弯曲的方向就是旋转的正方向。如下图所示。

最为常见的旋转是绕某坐标轴的简单旋转。让我们从绕x 轴旋转开始。

求出旋转后的基向量,可以得到矩阵。

与绕y轴的3D旋转与之类似,如图

可得绕y轴旋转的矩阵。

最后是绕z轴的旋转如公式所示

3.3D中绕坐标轴的旋转

当然也能绕3D中的任意轴旋转。因为这里不考虑平移,可以假设旋转轴通过原点。这种旋转比绕坐标轴的旋转更复杂也更少见。用单位向量n描述旋转轴,和前面一样用

描述旋转量。

v'是向量v绕轴n旋转后的向量。让我们看看能否用v,n

表示v‘。我们的想法是在垂直于n的平面中解决这个问题,那么这就转换为了一个简单的2D问题。为了做到这一点,将v分解为两个分量:

-------------------------------------------------------------------------------------------暂时发布还没有写完

世界坐标系到观察坐标系的变换步骤_《3D数学基础》提炼总结(九)矩阵和线性变换...相关推荐

  1. 世界坐标系到观察坐标系的变换步骤_带你轻松认识不同坐标系下向量的“变脸”——基变换...

    这是<机器学习中的数学基础>系列的第6篇. 今天我们来介绍基变换,简单地说,基变换就是把向量用不同的基来表示.我们来举个例子: 图1 如上图,在我们常见的标准坐标系中,有一个向量w=(2, ...

  2. 世界坐标系到观察坐标系的变换步骤_shader观察(像机)矩阵变换的一己之见

    观察空间矩阵是把像机在世界坐标变换为世界坐标的原点的矩阵,而世界坐标的顶点通过此矩阵的变换,会转换为以像机为原点的坐标系. 设像机在世界坐标(5,5,0),F点在世界坐标(6,6,0),当像机为原点时 ...

  3. matlab z变换离散化_用C++编写一个简单的光栅化渲染器:3D篇

    3D光栅化与2D光栅化在图元绘制方面差别并不大,3D光栅化主要是多了很多坐标系(Local,world,View...),除此外遮挡算法和裁剪算法也会稍微复杂一些. 本篇文章的重点就主要集中在各种坐标 ...

  4. DirectX 3D_基础之模型表示 顶点格式 三角形 索引 虚拟摄像机 投影窗口 绘制流水线 局部坐标系 观察坐标系 世界坐标系 背面消隐 光照 裁剪 投影 视口变换 光栅化

    每日一语: 当一切都安于现状后,这个社会就无法发展,也就无法从原始社会发展到现代社会,对于人也是一样,如果我们一直安于现状,就无法有更大更好的发展,我们不要想着,一直可以过安逸的生活,程序员这个职业, ...

  5. [图形学] 坐标系变换——从世界坐标系到相机坐标系

    坐标系变换是图形学中最基础的部分,一个物体从建模到显示在屏幕,经历了从物体坐标系到世界坐标系,再从世界坐标系到观察坐标系,最后通过投影到2D平面,再变换到屏幕坐标等一系列过程. 投影矩阵 我们可以很容 ...

  6. python 点云从相机坐标系到世界坐标系/ 世界坐标系到相机坐标系下的变换

    问题: 已知相机外参 extr 和 相机坐标系下的点云 pc 求解世界坐标系下的 点云 pc 或 已知相机外参 extr 和 世界坐标系下的点云 pc 求解相机坐标系下的 点云 pc notes: 1 ...

  7. 世界坐标系,相机坐标系,平面坐标系,像素坐标系

    转载: 世界坐标系,相机坐标系,图像坐标系,像素坐标系 世界坐标系.相机坐标系.图像坐标系.像素坐标系之间的转换 一.世界坐标系到相机坐标系 世界坐标系,也称为测量坐标系,它是一个三维直角坐标系(xw ...

  8. 相机参数和相机模型各个坐标系(世界坐标系、相机坐标系、图像坐标系、像素坐标系之间变换)

    坐标系变换 1. 几个坐标系: 世界坐标系(world coordinate system): 用户定义的三维世界的坐标系,为了描述目标物在真实世界里的位置而被引入.单位为m. 相机坐标系(camer ...

  9. (五)carla中世界坐标系与相机坐标系、像素坐标系变换

    (五)carla中世界坐标系与相机坐标系.像素坐标系变换 由于实验需要将 carlacarlacarla 中世界坐标系下的坐标点画到相机采集的前视图上,故需要进行坐标系之间的转换. 转换中遇到的问题 ...

最新文章

  1. 并发队列-无界阻塞优先级队列
  2. !亲测有效!质量最高的pr模板网站,有点小贵罢了
  3. 21种mysql_Mysql中,21个写SQL的好习惯,可以看一下
  4. Sharepoint学习笔记—ECM系列—1 Content Type Syndication
  5. 初窥Linux 之 我最常用的20条命令
  6. python工厂模式 取代__init___浅析Python 简单工厂模式和工厂方法模式的优缺点
  7. 计算机职称考试软盘,2010年职称计算机考试:磁盘格式化
  8. php 反射类 解析注释,php反射获取类和方法中的注释
  9. c大小写转换函数_字符处理——大小写转换编程思路扩展
  10. mz04那智不二越机器人编程_买买买!这些炫酷的机器人已加入进博会“购物车”!...
  11. [转]Javascript 中 String.replace( ) 的妙用
  12. Oracle ORA-01033: ORACLE initialization or shutdown in progress 错误解决办法Windows版(手贱强制重启电脑的后果)...
  13. AI智能双标题插件+内容伪原创插件集成
  14. 推特员工大规模辞职,马斯克被“问候”;腾讯10多万员工平均月薪超8万;雪欲“白嫖”网易百万玩家数据...
  15. 老板拖欠工资怎么办?
  16. 分类变量 哑变量矩阵 指标矩阵_ML基础:协方差矩阵
  17. 【最短路算法】第二弹:一文弄懂Bellman-Ford(贝尔曼福特算法)
  18. 数据脱敏的场景与价值【总结】
  19. Java教程:使用POI读取excel文档(根据BV1bJ411G7Aw整理)
  20. PHP生成带图片的Excel

热门文章

  1. 从谷歌辞职后,作为独立开发者的第三年,我从年入 3 万做到了年入 40 万
  2. 本地缓存性能之王Caffeine
  3. 有关 HashMap 面试会问的一切
  4. 分布式事务开局第一篇,从数据库事务隔离级别说起
  5. 阿里同款目标管理和绩效管理系统,让每个岗位都为业务赋能
  6. 全栈技术实践经历告诉你:开发一个商城小程序要多少钱?
  7. Tomcat配置server.xml
  8. 操作系统结构-外核结构
  9. word笔记之选择性粘贴-设置默认粘贴为当前格式
  10. c if 判断select已经选择的值_Golang语言基础教程:if分支语句