计算机图形学 第6章 三维变换与投影
目录
# 学习要求
前置知识
三维几何变换总的式子:
平移变换
比例变换
旋转变换:绕x轴旋转
反射变换
错切变换
三维复合变换
坐标系变换
正交投影矩阵
三视图
斜投影定义
透视投影
透视变换坐标系
## 代码
透视投影分类
# 学习要求
- 熟练掌握三维几何变换矩阵
- 掌握正交投影
- 掌握斜投影
- 熟练掌握透视投影
前置知识
三维变换同样引入了齐次坐标技术,在四维空间(x,y,z,w)内进行讨论。
定义了规范化齐次坐标以后,三维图形几何变换就可以表示为物体顶点集合的规范化齐次坐标矩阵与某一变换矩阵相乘的形式。(似曾相识呢)
用规范化齐次坐标表示的三维图形几何变换矩阵是一个4×4方阵,简称为三维几何变换矩阵。
基本上往下都是围绕三个坐标轴来展开计算了。
三维几何变换总的式子:
平移变换
比例变换
旋转变换:绕x轴旋转
四边形ABCD,各顶点的坐标分别为A(4,1),B(7,3),C(7,7),D(1,4)。求绕P(5,4)点分别旋转45度和90度(逆时针)的变换矩阵,并求出各端点的坐标,画出变换后的图形。(考)
思路:
将abcd与点p连接起来,便到apb.bpc.cpd.dpa四个三角形,绕点p逆时针旋转45 90便得到图形a,b,c,d, a,,b,,c,,d,,两个图形。利用三角函数和分割图形便可得到个点坐标。
大体流程:
7 求四边形 ABCD 绕 P(5,4)旋转45度_百度题库 (baidu.com)
反射变换
好吧,没想到还有关于平面的反射。
错切变换
三维复合变换
总的式子
T的原式在上面。
在三维基本几何变换中,比例变换和旋转变换是与参考点相关的。
相对于任一参考点Q(x,y,z)的比例变换和旋转变换应表达为复合变换形式。
变换方法是(似曾相识)
- 首先将参考点平移到坐标原点,相对于坐标原点作比例变换或旋转变换,
- 然后再进行反平移将参考点平移回原位置。
相对于任意方向的变换方法是
- 首先对任意方向做旋转变换,使变换方向与某个坐标轴重合,
- 然后对该坐标轴进行三维基本几何变换,
- 最后做反向旋转变换,将任意方向还原到原来的方向。
三维几何变换中需要进行两次旋转变换,才能使任意方向与某个坐标轴重合。
- 一般做法是先将任意方向旋转到某个坐标平面内,然后再旋转到与该坐标平面内的某个坐标轴重合。
看清楚嗷,是谁绕谁旋转。
坐标系变换
在进行三维观察时,需要将物体的描述从世界坐标系变换到观察坐标系,然后通过旋转视点可以观察物体的全貌。
同一种变换既可以看作是点变换也可以看作是坐标系变换。点变换是顶点位置发生改变,但坐标系位置不发生改变。坐标系变换是建立新坐标系描述旧坐标系内的顶点,坐标系位置发生改变,但顶点位置不发生改变。
正交投影矩阵
三视图
一个物体有6个视图:从物体的前面向后面投射所得的视图称主视图,从物体的上面向下面投射所得的视图称俯视图,从物体的左面向右面投射所得的视图称侧视图,还有其它三个视图不是很常用。
主视图
俯视图
侧视图
使用上述三视图变换矩阵绘制的三视图虽然位于都同一平面内,但却彼此相连。这对于使用不同的视区单独绘制主视图、俯视图和侧视图,不会产生影响。
斜投影定义
将三维物体向投影面内作平行投影,但投影方向不垂直于投影面得到的投影称为斜投影。
与正交投影相比,斜投影具有较好的立体感。
斜投影也具有部分类似正交投影的可测量性,平行于投影面的物体表面的长度和角度投影后保持不变。
透视投影
与平行投影相比,透视投影的特点是所有投影线都从空间一点(称为视点或投影中心)投射,
离视点近的物体投影大,离视点远的物体投影小,小到极点消失,称为灭点(vanishing point)。
一般将屏幕放在观察者和物体之间。投影线与屏幕的交点就是物体上一点的透视投影。
视点代表人眼或照相机、摄像机的位置,是观察坐标系的原点。视心是屏幕坐标系的原点。
透视变换坐标系
## 代码
void CTestView::InitParameter()
{//初始化三角函数k[1]=sin(PI*Theta/180); k[2]=sin(PI*Phi/180);k[3]=cos(PI*Theta/180);k[4]=cos(PI*Phi/180);k[5]=k[2]*k[3];k[6]=k[2]*k[1];k[7]=k[4]*k[3];k[8]=k[4]*k[1];//世界坐标系的视点球坐标ViewPoint.x=R*k[6]; ViewPoint.y=R*k[4];ViewPoint.z=R*k[5];
}
编程实现将物体的坐标描述从世界坐标系转换到
观察坐标系,函数WorldToView() :
void CTestView::WorldToView(CP3 WorldP)
{CP3 ViewP;ViewP.x=k[3]* WorldP.x-k[1]* WorldP.z; ViewP.y=-k[8]* WorldP.x+k[2]* WorldP.y-k[7]* WorldP.z;ViewP.z=-k[6]* WorldP.x-k[4]* WorldP.y-k[5]* WorldP.z+R;
}
WorldP为观察坐标系三维点,ViewP为观察坐标系的三维点。本段代码完成了将世界坐标系中一点的坐标表示转换到观察坐标系中表示。
CP2 CTestView::PerProject(CP3 ViewP)
{CP2 ScreenP;// ScreenP屏幕坐标系二维点ScreenP.x=d*ViewP.x/ViewP.z;ScreenP.y=Round(d*ViewP.y/ViewP.z); return ScreenP;
}
本段代码将观察坐标系中的三维点ViewP透视投影
转换为屏幕坐标系中的二维点ScreenP。
透视投影分类
透视投影中,与屏幕平行的平行线投影后仍保持平行。
不与屏幕平行的平行线投影后汇聚为灭点,灭点是无限远点在屏幕上的投影。
每一组平行线都有其不同的灭点。坐标轴上灭点称为主灭点。
透视投影中主灭点数目是由屏幕切割坐标轴的数量来决定,并据此将透视投影分类为一点、二点和三点透视。
一点透视有一个主灭点,即屏幕仅与一个坐标轴正交,与另外两个坐标轴平行;
二点透视有两个主灭点,即屏幕仅与两个坐标轴相交,与另一个坐标轴平行;
三点透视有三个主灭点,即屏幕与三个坐标轴都相交
物体是三维坐标系,屏幕是二维坐标系。投影就是将三维转换为二维,也就是处理掉z坐标。
观察坐标系的三维坐标转换为屏幕坐标系的二维坐标的方法有以下几种:
式中,Near和Far是常数,且Near就是视距d。透视变换的一个重要性质是把直线映射为直线,平面映射为平面。
计算机图形学 第6章 三维变换与投影相关推荐
- 计算机图形学三维变换论文,计算机图形学 第5章 三维图形生成和变换技术
计算机图形学 第5章 三维图形生成和变换技术 (63页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 19.90 积分 第五章 目录第五章 三维图形生成和变 ...
- 计算机图形学 第六章 图形变换
计算机图形学 第六章 图形变换 这章一般只考一道题(10分左右) 数学基础 (都是线性代数的知识,这里略写) 齐次坐标: 将一个原本是 nnn 维的向量用一个 n+1n+1n+1 维向量来表示 如 ( ...
- 计算机图形学 第六章 曲线曲面建模技术
文章目录 1 参数方程 2 参数曲线的一般形式 3 张量积形式的参数曲面 4 连续性的定义 参数连续性Ck 5 插值.逼近和拟合 6 Bernstein多项式 7 Bezier曲线及曲面,构造方法和性 ...
- 计算机图形学基础第七章ppt,计算机图形学 -第七章讲义ppt课件
<计算机图形学 -第七章讲义ppt课件>由会员分享,可在线阅读,更多相关<计算机图形学 -第七章讲义ppt课件(54页珍藏版)>请在人人文库网上搜索. 1.第七章 三维观察,本 ...
- 计算机图形学中几何变换的定义,计算机图形学-第5章-几何变换课件
<计算机图形学-第5章-几何变换课件>由会员分享,可在线阅读,更多相关<计算机图形学-第5章-几何变换课件(70页珍藏版)>请在人人文库网上搜索. 1.计算机图形学-第5章-几 ...
- 计算机图形学 第四章 光栅图形学
第四章 光栅图形学 计算机图形学 第四章 光栅图形学的相关内容,包括:直线段的扫描转换算法.圆弧的扫描转换算法.多边形区域填充.字符的生成.裁剪.反走样 等 Def 光栅显示器:一个像素矩阵(因此,要 ...
- 【XJTUSE计算机图形学】第一章 绪论
禁止转载 文章目录 [XJTUSE计算机图形学]第一章 绪论 1.1 研究内容 1.图形系统的主要任务 2.计算机图形学的研究对象 3.图形的要素[填空题] 4.图形图像表示法 5.图形研究例子 6. ...
- 第三章 计算机图形处理,计算机图形学第三章-1(Basic).ppt
<计算机图形学第三章-1(Basic).ppt>由会员分享,可在线阅读,更多相关<计算机图形学第三章-1(Basic).ppt(28页珍藏版)>请在人人文库网上搜索. 1.清华 ...
- 计算机图形学 实验3 《图形变换》
计算机图形学 实验3 <图形变换> 一.实验目的 学习图形的基本几何变换. 二.实验内容 1.投影变换: 2.视口变换: 3.旋转.平移和缩放. 三.实验方法 本次实验将投影变换.视口变换 ...
最新文章
- IP、TCP、UDP报文头说明
- 网络营销——网络营销专员表明网站地图助力网站收录进一步提升
- python 栈和队列 排序 初级数据结构
- HDOJ 1016 HDU 1016 Prime Ring Problem ACM 1016 IN HDU
- 高效使用Vector
- Laravel自定义分页样式
- 最大均值差异java_MATLAB最大均值差异(Maximum Mean Discrepancy)
- 微软开源Power Fx,基于Excel的低代码编程语言
- TortoiseGit 客户端安装及使用
- 《Python Cookbook 3rd》笔记(2.8):多行匹配模式
- oracle无法重命名服务器名字,重命名Oracle数据库服务器
- yiibooster+bsie
- 第15组构建之法团队心得
- PMP复习整理考点篇【9】--- 实施定性风险分析与实施定量风险分析
- *帅帅老师,编写函数,将999-9999整数放入一个数组当中
- 《Unity 3D游戏客户端基础框架》系统设计
- linux wine乱码,解决wine中文乱码的问题
- linux nfs共享目录访问速度慢,linux之间共享文件夹选nfs还是选samba--
- 第10章 模糊查询和聚合函数
- 今天有空,不如来找找“双鸭山大学”的由来吧~
热门文章
- 用户网络接口UNI和网络节点接口NNI
- 全国计算机等级考试——二级JAVA完整大题题库【五十三道】
- 超级账本Fabric学习(二)Fabric1.0.0网络搭建(中)无业务逻辑处理的Fabric网络
- PDF矢量图片转为EPS格式图片的方法
- Sizzle.filter [ 源码分析 ]
- linux系统du指令,linux的du命令
- 如何解决excel表格损坏修复中所遇到的难题
- 计算机辅助仿真模拟的英文缩写,全国计算机等级考试二级MS Office
- 一篇文章读懂少儿机器人编程课程学什么?
- django 导出数据到excel表 导出excel表到目标路径及客户端下载