第六章 二维变换及二维观察 如何对二维图形进行方向、尺寸和形状方面的变换。 如何进行二维观察。.

Slides:



Advertisements
Similar presentations
2.6 隐函数微分法 第二章 第二章 二、高阶导数 一、隐式定义的函数 三、可微函数的有理幂. 一、隐函数的导数 若由方程 可确定 y 是 x 的函数, 由 表示的函数, 称为显函数. 例如, 可确定显函数 可确定 y 是 x 的函数, 但此隐函数不能显化. 函数为隐函数. 则称此 隐函数求导方法.
Advertisements

第八章 投影变换 第八章 投影变换 内容 : 一. 导引 二. 投影介绍 三. 投影变换原理 四. 总结 五. 补充内容.
§3.4 空间直线的方程.
《解析几何》 -Chapter 3 §7 空间两直线的相关位置.
第八章 向量代数 空间解析几何 第五节 空间直线及其方程 一、空间直线的点向式方程 和参数方程 二、空间直线的一般方程 三、空间两直线的夹角.
3.4 空间直线的方程.
《解析几何》 乐山师范学院 0 引言 §1 二次曲线与直线的相关位置.
第五章 二次型 §5.1 二次型的矩阵表示 §5.2 标准形 §5.3 唯一性 §5.4 正定二次型 章小结与习题.
第五章 二次型. 第五章 二次型 知识点1---二次型及其矩阵表示 二次型的基本概念 1. 线性变换与合同矩阵 2.
云南省丽江市古城区福慧学校 执教者 :和兆星.
第二章 二次函数 第二节 结识抛物线
俄罗斯方块:注意观察游戏中用到的 数学的知识
一次函数的图象复习课 南华实验学校 初二(10)班 教师:朱中萍.
第5章 定积分及其应用 基本要求 5.1 定积分的概念与性质 5.2 微积分基本公式 5.3 定积分的换元积分法与分部积分法
初中数学 九年级(下册) 5.3 用待定系数法确定二次函数表达式.
七 年 级 数 学 第二学期 (苏 科 版) 复习 三角形.
初中数学八年级下册 (苏科版) 10.4 探索三角形 相似的条件(2).
计算机图形学 《计算机图形学》 路 通 博士、教授 南京大学计算机科学与技术系课程
计算机科学与技术专业研究型课程 矩阵和线性变换 宋传鸣 辽宁师范大学计算机与信息技术学院.
第六章 二维变换及二维观察 6.1 基本概念 齐次坐标 齐次坐标表示就是用n+1维向量表示一个n维向量。
强连通分量 无向图 1、任意两顶点连通称该图为连通图 2、否则将其中的极大连通子图称为连通分量 A D C B E 有向图
第五章 变换和裁剪.
绘制圆与多边形 椭圆形 绘制椭圆形的方法是 drawOval(x ,y , width , height), 绘制实心椭圆形的方法是
第6章 图形几何变换.
工业机器人技术基础及应用 主讲人:顾老师
双曲线的简单几何性质 杏坛中学 高二数学备课组.
§7.2 直线的方程(1) 1、经过两点P1(x1,y1),P2(x2,y2)的斜率公式: 2、什么是直线的方程?什么是方程的直线?
2.1.2 空间中直线与直线 之间的位置关系.
平行四边形的性质 灵寿县第二初级中学 栗 彦.
工业机器人技术基础及应用 主讲人:顾老师
CAD/CAM技术 第二章 计算机图形学基础.
第六章 图形裁剪 在用户坐标系中定义的图形往往是大而复杂的,而输出设备如显示屏幕的尺寸及其分辨率却是有限的,为了能够清晰地观察某一部分或对其进行某些绘图操作,就需要将所关心的这一局部区域的图形从整个图形中区分出来,这个区分指定区域内和区域外的图形过程称为裁剪,所指定的区域称为裁剪窗口。 裁剪通常是对用户坐标系中窗口边界进行裁剪,然后把窗口内的部分映射到视区中,也可以首先将用户坐标系的图形映射到设备坐标系或规范化设备坐标系中,然后用视区边界裁剪。
变换与裁剪.
专题二: 利用向量解决 平行与垂直问题.
第二十二章 曲面积分 §1 第一型曲面积分 §2 第二型曲面积分 §3 高斯公式与斯托克斯公式.
第三章 图形变换.
实数与向量的积.
线段的有关计算.
27.3 位 似
北师大版八年级(上) 第五章 位置的确定 5.2 平面直角坐标系(3).
一个直角三角形的成长经历.
OpenGL几何变换程序.
⑴当∠MBN绕点B旋转到AE=CF时(如图1),比较AE+CF与EF的大小关系,并证明你的结论。
3.3 垂径定理 第2课时 垂径定理的逆定理.
第三章 空间向量与立体几何 3.1 空间向量及其运算 3.1.5空间向量运算的 坐标表示.
复习: 若A(x1,y1,z1) , B(x2,y2,z2), 则 AB = OB - OA=(x2-x1 , y2-y1 , z2-z1)
§8.3 不变因子 一、行列式因子 二、不变因子.
第四章 第四节 函数图形的描绘 一、渐近线 二、图形描绘的步骤 三 、作图举例.
抛物线的几何性质.
13.3 等腰三角形 (第3课时).
§ 正方形练习⑵ 正方形 本资料来自于资源最齐全的21世纪教育网
直线和圆的位置关系 ·.
O x y i j O x y i j a A(x, y) y x 5.4 平面向量的坐标运算 5.4 平面向量的坐标运算 5.4 平面向量的坐标运算 5.4 平面向量的坐标运算 5.4 平面向量的坐标运算 5.4 平面向量的坐标运算 5.4 平面向量的坐标运算.
第七章 图 形 变 换 (一) 2019/5/7 Thank you for your time today.
2.2矩阵的代数运算.
第15讲 特征值与特征向量的性质 主要内容:特征值与特征向量的性质.
§2 方阵的特征值与特征向量.
直线的倾斜角与斜率.
在发明中学习 线性代数概念引入 之四: 矩阵运算 李尚志 中国科学技术大学.
4.6 图形的位似     观察思考:这两幅图片有什么特征? 都是有好几张相似图形组成,每个对应顶点都经过一点.
23.6 图形与坐标 图形的变换与坐标
第四节 向量的乘积 一、两向量的数量积 二、两向量的向量积.
1.2轴对称的性质 八 年 级 数 学 备 课 组.
FVX1100介绍 法视特(上海)图像科技有限公司 施 俊.
位似.
复习回顾 条件:不重合、都有斜率 条件:都有斜率 两条直线平行与垂直的判定 平行:对于两条不重合的直线l1、l2,其斜率分别为k1、k2,有
§4.5 最大公因式的矩阵求法( Ⅱ ).
正方形的性质.
第三章 图形的平移与旋转.
3.3.2 两点间的距离 山东省临沂第一中学.
Presentation transcript:

第六章 二维变换及二维观察 如何对二维图形进行方向、尺寸和形状方面的变换。 如何进行二维观察。

二维变换及二维观察 基本几何变换与基本概念 二维图形几何变换的计算 复合变换 变换的性质

6.2 基本几何变换 图形的几何变换是指对图形的几何信息经过平移、比例、旋转等变换后产生新的图形,是图形在方向、尺寸和形状方面的变换。 基本几何变换都是相对于坐标原点和坐标轴进行的几何变换。

基本几何变换——平移变换 平移是指将p点沿直线路径从一个坐标位置移到另一个坐标位置的重定位过程。 图6-1 平移变换

基本几何变换——平移变换 推导: 矩阵形式: Tx,Ty称为平移矢量。

基本几何变换——比例变换 推导: 矩阵形式:

基本几何变换——比例变换 比例变换是指对p点相对于坐标原点沿x方向放缩Sx倍,沿y方向放缩Sy倍。其中Sx和Sy称为比例系数。

基本几何变换——比例变换 图6-3 比例变换

基本几何变换——旋转变换 二维旋转是指将p点绕坐标原点转动某个角度(逆时针为正,顺时针为负)得到新的点p’的重定位过程。 图6-4 旋转变换

基本几何变换——旋转变换 推导: (极坐标) 矩阵:逆时针旋转θ角

基本几何变换 平移、缩放、旋转变换的矩阵表示: 图形通常要进行一系列基本几何变换,希望能够 把二维变换统一表示为矩阵的乘法。

基本几何变换——规范化齐次坐标 齐次坐标表示就是用n+1维向量表示一个n维向量。 规范化齐次坐标表示就是h=1的齐次坐标表示。

基本几何变换 平移:

基本几何变换 比例:

基本几何变换 整体比例变换:

基本几何变换 旋转变换:

基本几何变换——二维变换矩阵

基本几何变换——对称变换 对称变换后的图形是原图形关于某一轴线或原点的镜像。

基本几何变换——对称变换

基本几何变换——对称变换 (1)关于x轴对称 图6-5 关于x轴对称

基本几何变换——对称变换 (2)关于y轴对称 图6-6 关于y轴对称

基本几何变换——对称变换 (3)关于原点对称 图6-7 关于原点对称

基本几何变换——对称变换 (4)关于y=x轴对称 图6-8 关于x=y对称

基本几何变换——对称变换 (5)关于y=-x轴对称 图6-9 关于x=-y对称

基本几何变换——错切变换 错切变换,也称为剪切、错位变换,用于产生弹性物体的变形处理。 图6-10 错切变换

基本几何变换——错切变换 其变换矩阵为: (1)沿x方向错切 (2)沿y方向错切 (3)两个方向错切

二维图形几何变换的计算 几何变换均可表示成P’=P*T的形式。   1. 点的变换  

二维图形几何变换的计算  2. 直线的变换

二维图形几何变换的计算 3. 多边形的变换

复合变换 图形作一次以上的几何变换,变换结果是每次变换矩阵的乘积。 任何一复杂的几何变换都可以看作基本几何变换的组合形式。 复合变换具有形式:

复合变换——二维复合平移

复合变换——二维复合比例

复合变换——二维复合旋转

复合变换

相对任一参考点的二维几何变换 相对某个参考点(xF,yF)作二维几何变换,其变换过程为: (1) 平移; (2) 针对原点进行二维几何变换; (3) 反平移。

相对任一参考点的二维几何变换 例1. 相对点(xF,yF)的旋转变换

相对任意方向的二维几何变换 相对任意方向作二维几何变换,其变换的过程是: (1) 旋转变换; (2) 针对坐标轴进行二维几何变换; (3) 反向旋转。 例2. 相对直线y=x的反射变换

复合变换 例3. 将正方形ABCO各点沿下图所示的(0,0)→(1,1)方向进行拉伸,结果为如图所示的,写出其变换矩阵和变换过程。

可能发生的变换:沿(0,0) 到(1,1)的比例变换 可能发生的变换:沿(0,0) 到(1,1)的比例变换 图6-11 沿固定方向拉伸

坐标系之间的变换 问题: 图6-12 坐标系间的变换

坐标系之间的变换 分析: 图6-13 坐标系间的变换的原理

可以分两步进行: 图6-14 坐标系间的变换的步骤

于是: 

光栅变换 直接对帧缓存中象素点进行操作的变换称为光栅变换。  光栅平移变换: 

光栅变换 90°、180°和270°的光栅旋转变换:   图6-15 光栅旋转变换

光栅变换 任意角度的光栅旋转变换:   图6-16 任意角度的光栅旋转变换

光栅变换 光栅比例变换:进行区域的映射处理。 图6-16 光栅比例变换

变换的性质 二维仿射变换是具有如下形式的二维坐标变换: 二维仿射变换是具有如下形式的二维坐标变换:  平移、比例、旋转、错切和反射等变换均是二维仿射变换的特例,反过来,任何常用的二维仿射变换总可以表示为这五种变换的复合。 

变换的性质 仅包含旋转、平移和反射的仿射变换维持角度和长度的不变性; 比例变换可改变图形的大小和形状; 错切变换引起图形角度关系的改变,甚至导致图形发生畸变。

二维观察 基本概念 二维观察变换 二维裁剪 OpenGL中的二维观察

二维观察——基本概念 在计算机图形学中,将在用户坐标系中需要进行观察和处理的一个坐标区域称为窗口(Window)。 将窗口映射到显示设备上的坐标区域称为视区(Viewport)。

二维观察——基本概念 要将窗口内的图形在视区中显示出来,必须经过将窗口到视区的变换(Window-Viewport Transformation)处理,这种变换就是观察变换(Viewing Transformation)。

二维观察——基本概念 观察坐标系(View Coordinate)是依据窗口的方向和形状在用户坐标平面中定义的直角坐标系。 规格化设备坐标系(Normalized Device Coordinate)也是直角坐标系,它是将二维的设备坐标系规格化到(0.0,0.0)到(1.0,1.0)的坐标范围内形成的。

二维观察——基本概念 引入了观察坐标系和规格化设备坐标系后,观察变换分为如下图所示的几个步骤,通常称为二维观察流程。 引入了观察坐标系和规格化设备坐标系后,观察变换分为如下图所示的几个步骤,通常称为二维观察流程。   图6-17 二维观察流程

二维观察——基本概念 变焦距效果 图6-18 变焦距效果(窗口变、视区不变)

二维观察——基本概念 整体放缩效果 图6-17 整体放缩效果(窗口不变、视区变) 漫游效果 

用户坐标系到观察坐标系的变换 用户坐标系到观察坐标系的变换分由两个变换步骤合成: 将观察坐标系原点移动到用户坐标系原点;

用户坐标系到观察坐标系的变换 绕原点旋转使两坐标系重合 

窗口到视区的变换

窗口到视区的变换 要将窗口内的点(xw,yw)映射到相对应的视区内的点(xv,yv)需进行以下步骤: (1) 将窗口左下角点移至用户系统系的坐标原点; (2) 针对原点进行比例变换; (3) 进行反平移。

裁剪 在二维观察中,需要在观察坐标系下对窗口进行裁剪,即只保留窗口内的那部分图形,去掉窗口外的图形。 假设窗口是标准矩形,即边与坐标轴平行的矩形,由上(y=wyt)、下(y=wyb)、左(x=wxl)、右(x=wxr)四条边描述。

裁剪——点的裁剪

二维直线段的裁剪 已知条件: (1)窗口边界wxl,wxr,wyb,wyt的坐标值; (2)直线段端点p1p2的坐标值x1,y1,x2,y2。 

虚交点:处于直线段延长线或窗口边界延长线上的交点。 p6 p1    p3    p4   p5    p2    实交点:直线段与窗口矩形边界的交点; 虚交点:处于直线段延长线或窗口边界延长线上的交点。 

Cohen-Sutherland算法 编码:对于任一端点(x,y),根据其坐标所在的区域,赋予一个4位的二进制码D3D2D1D0。 编码规则如下: 0  1  (1)若x<wxl,D0=1,否则D0=0; (2)若x>wxr,D1=1,否则D1=0; (3)若y<wyb,D2=1,否则D2=0; (4)若y>wyt,D3=1,否则D3=0。

Cohen-Sutherland算法 (1)判断 裁剪一条线段时,先求出直线段端点p1和p2的编码code1和code2,然后: a.若code1|code2=0,对直线段简取之; b.若code1&code2≠0,对直线段简弃之;

Cohen-Sutherland算法 (2)求交 若上述判断条件不成立,则需求出直线段与窗口边界的交点。 a. 左、右边界交点的计算:y = y1 + k(x - x1); b. 上、下边界交点的计算:x = x1 + (y-y1)/k。 其中,k=(y2-y1)/(x2-x1)。

Cohen-Sutherland算法 p2    p1 p2    p1 p3 p1 p2 p2 p1 p4 p1 p2 p1 p2

Cohen-Sutherland算法 用编码方法实现了对完全可见和不可见直线段的快速接受和拒绝; 求交过程复杂,有冗余计算,并且包含浮点运算,不利于硬件实现。

中点分割算法 中点分割算法的核心思想是通过二分逼近来确定直线段与窗口的交点。

中点分割算法 特点:主要计算过程只用到加法或位移运算,易于硬件实现,同时适合于并行计算。 

Liang-Barsky算法  分析 

Liang-Barsky算法 直线的参数方程 对于直线上一点(x,y),若它在窗口内则有

令 则有

Liang-Barsky算法 由

特殊处理: 求出参数值: u3=q3/p3, u4=q4/p4 uA=0, uB= 1,

求出参数值: u1=q1/p1, u2=q2/p2 uA= 0, uB= 1,

一般情况:

算法步骤: (1)输入直线段的两端点坐标:(x1,y1)和(x2,y2),以及窗口的四条边界坐标:wyt、wyb、wxl和wxr。 (2)若Δx=0,则p1=p2=0。此时进一步判断是否满足q1<0或q2<0,若满足,则该直线段不在窗口内,算法转(7)。否则,满足q1>0且q2>0,则进一步计算u1和u2。算法转(5)。 (3)若Δy=0,则p3=p4=0。此时进一步判断是否满足q3<0或q4<0,若满足,则该直线段不在窗口内,算法转(7)。否则,满足q1>0且q2>0,则进一步计算u1和u2。算法转(5)。 (4)若上述两条均不满足,则有pk≠0(k=1,2,3,4)。此时计算u1和u2。 (5)求得u1和u2后,进行判断:若u1>u2,则直线段在窗口外,算法转(7)。若u1<u2,利用直线的参数方程求得直线段在窗口内的两端点坐标。 (6)利用直线的扫描转换算法绘制在窗口内的直线段。算法结束。

多边形的裁剪 问题的提出: 

Sutherland-Hodgeman多边形裁剪 基本思想:将多边形的边界作为一个整体,每次用窗口的一条边界对要裁剪的多边形进行裁剪,体现分而治之的思想。

Sutherland-Hodgeman多边形裁剪 算法实施策略: 为窗口各边界裁剪的多边形存储输入与输出顶点表。在窗口的一条裁剪边界处理完所有顶点后,其输出顶点表将用窗口的下一条边界继续裁剪。 窗口的一条边以及延长线构成的裁剪线把平面分为两个区域,包含窗口区域的区域称为可见侧;不包含窗口区域的域为不可见侧。

Sutherland-Hodgeman多边形裁剪 沿着多边形依次处理顶点会遇到四种情况:

特点

Weiler-Atherton多边形裁剪 假定按顺时针方向处理顶点,且将用户多边形定义为Ps,窗口矩形为Pw。算法从Ps的任一点出发,跟踪检测Ps的每一条边,当Ps与Pw相交时(实交点),按如下规则处理: (1)若是由不可见侧进入可见侧,则输出可见直线段,转(3);

Weiler-Atherton多边形裁剪 (2)若是由可见侧进入不可见侧,则从当前交点开始,沿窗口边界顺时针检测Pw的边,即用窗口的有效边界去裁剪Ps的边,找到Ps与Pw最靠近当前交点的另一交点,输出可见直线段和由当前交点到另一交点之间窗口边界上的线段,然后返回处理的当前交点; (3)沿着Ps处理各条边,直到处理完Ps的每一条边,回到起点为止。

下图示了Weiler-Atherton算法裁剪凹多边形的过程和结果。

其他裁剪 2. 文字裁剪 文字裁剪的策略包括几种: 串精度裁剪 字符精度裁剪 笔划、象素精度裁剪 3. 外部裁剪 2. 文字裁剪 文字裁剪的策略包括几种: 串精度裁剪 字符精度裁剪 笔划、象素精度裁剪  3. 外部裁剪 保留落在裁剪区域外的图形部分、去掉裁剪区域内的所有图形,这种裁剪过程称为外部裁剪,也称空白裁剪。

6.6 OpenGL中的二维观察 指定矩阵堆栈 指定裁剪窗口 指定视区

glMatrixMode(GL_PROJECTION) 指定矩阵堆栈 指定当前操作的是投影矩阵堆栈 glMatrixMode(GL_PROJECTION) 初始化,即指定当前操作的矩阵堆栈的栈顶元素为单位矩阵。 glLoadIdentity();

gluOtho2D(xwmin, xwmax, ywmin, ywmax); 指定裁剪窗口 定义二维裁剪窗口 gluOtho2D(xwmin, xwmax, ywmin, ywmax); 其中,双精度浮点数xwmin, xwmax, ywmin, ywmax分别对应裁剪窗口的左、右、下、上四条边界。 默认的裁剪窗口,四条边界分别为wxl=-1.0,wxr=1.0,wyt=-1.0,wyb=1.0。

glViewPort(xvmin,yvmin,vpWidth,vpHeighht); 指定裁剪窗口 指定视区 glViewPort(xvmin,yvmin,vpWidth,vpHeighht); xvmin和yvmin指定了对应于屏幕上显示窗口中的矩形视区的左下角坐标,单位为像素。 整型值vpWidth和vpHeighht则指定了视区的宽度和高度。 默认的视区大小和位置与显示窗口保持一致。