计算机图形学基础教程
计算机图形学基础教程(第2版)
图书前言
本书是在2005版《计算机图形学基础教程》的基础上修订而成。 《计算机图形学基础教程》是根据作者在清华大学多年教学实践,并参考了国内外最新的相关教材和部分最 新的研究成果编写而成。第2版教材主要修订了以下内容: 1.增加了第1章的1.5节,介绍清华大学近年来的最新研究成果。 2.增加了第3章的3.9节,介绍格表示、简化与细分。 3.增加了第4章的4.1节,介绍图形绘制的基本概念和流程,提高本章整体上的可读性。 4.将第4章4.8节层次细节的内容移入第3章的3.9节,增加有关景物模拟的内容。 5.删除第5章VRML的内容,改写Open GL的内容,增加一些常见的功能,并给出更多的示例。 本教程第1版出版4年来,被国内一大批高等院校采用,相关的老师、同学及读者提出了许多宝贵的建议,在 此表示衷心感谢。徐昆、来煜坤参与了第2版教材的修订,在此也一并表示感谢。
序言
清华大学计算机系列教材已经出版发行了近30种,包括计算机专业的基础数学、专业技术基础和专业等课程 的教材,覆盖了计算机专业大学本科和研究生的主要教学内容。这是一批至今发行数量很大并赢得广大读者赞誉 的书籍,是近年来出版的大学计算机教材中影响比较大的一批精品。
本系列教材的作者都是我熟悉的教授与同事,他们长期在第一线担任相关课程的教学工作,是一批很受大学 生和研究生欢迎的任课教师。编写高质量的大学(研究生)计算机教材,不仅需要作者具备丰富的教学经验和科 研实践,还需要对相关领域科技发展前沿的正确把握和了解。正因为本系列教材的作者们具备了这些条件,才有 了这批高质量优秀教材的出版。可以说,教材是他们长期辛勤工作的结晶。本系列教材出版发行以来,从其发行 的数量、读者的反映、已经获得的许多国家级与省部级的奖励,以及在各个高等院校教学中所发挥的作用上,都 可以看出本系列教材所产生的社会影响与效益。
计算机图形学基础教程
4.1实面积图形的概念 4.2有效边表填充算法 4.3边缘填充算法 4.4区域填充算法
4.1实面积图形的概念
实面积图形既能描述物体的几 何轮廓,又能表现物体的表面色彩, 与人们观察物体表面的习惯相一致, 同时,实面积图形也是描述三维物体、 绘制三维真实感图形的基础。
多边形是由折线段组成的封闭图形。它由有序
这里的多边形是使用顶点表示法表示的多边形。 多边形的填充是指从多边形的顶点信息出发,求出 其 覆盖的每个像素点,取为填充色,而将多边形外 部的 像素点保留为背景色。多边形填充的主要工作 是确定 穿越多边形内部的扫描线的覆盖区间。首先 确定多边
形覆盖的扫描线条数(y=ymin>max),对每一 条扫描线,
常采用“下闭上开"和“左闭右开"的原则对边 界像
素进行处理。图4-6的处理结果如图4-7所示, 每个小
正方形的右边界像素和上边界像素都没有 填充。图
4-8的处理结果如图4-9所示,上面一行 像素和右面
一列像素没有填充。
按照以上原则对图4-5中的一些特殊点
进行处理:
1仃2点的处理原则
图4-5中P2是边P3P2的终点,同时也是边P2P1 的起点。按照“下闭上开”的原则,可以自动处理。
扫描线从小到大的移动顺序,计算当前扫描线 与多
边形各边的交点,然后把这些交点按X值递 增的顺
序进行排序、配对,以确定填充区间,然 后用指定
颜色点亮填充区间内的所有像素,即完 成填充工作。
有效边表填充算法通过访问多边形 覆盖区间内的每
个像素,可以填充凸、凹多边形 和环,已成为目前
最为有效的多边形填充算法。
图4-5用一条扫描线填充多边形
4. 2. 2边界像素的处理原则
计算机图形学基础教程
计算机图形学基础教程第一章:引言计算机图形学是研究计算机处理和生成图像的一门学科,它涵盖了从数学、计算机科学到视觉感知等多个领域。
本教程将介绍计算机图形学的基本原理和技术,并通过实例演示来帮助读者理解和应用这些知识。
第二章:矢量图形矢量图形是计算机图形学中重要的概念之一。
本章将介绍矢量图形的定义、特点以及其在计算机图形学中的应用。
我们将学习如何使用数学表示矢量图形,如何进行矢量图形的变换和组合等。
第三章:三维图形的表示与变换三维图形的表示与变换是计算机图形学中的核心问题之一。
本章将介绍三维图形的表示方法,包括顶点表示和多边形表示,并讨论如何进行三维图形的变换,如旋转、平移、缩放等。
第四章:光照模型与渲染技术光照模型和渲染技术是实现真实感图形的重要手段。
本章将介绍光照模型的基本原理,如漫反射、镜面反射等,并讨论如何利用光照模型和渲染技术来实现真实感图形的效果。
第五章:图形管线与渲染流程图形管线是计算机图形学中的一个重要概念,它描述了图形数据如何从输入到输出的过程。
本章将介绍图形管线的基本原理和流程,并讨论图形数据的处理过程,如顶点处理、光栅化、片元处理等。
第六章:纹理映射与贴图技术纹理映射和贴图技术是计算机图形学中常用的技术之一。
本章将介绍纹理映射的原理和方法,包括纹理坐标的计算、纹理过滤、纹理混合等,并讨论如何利用纹理映射和贴图技术来增强图形的真实感。
第七章:几何建模与曲面设计几何建模和曲面设计是计算机图形学中用于创建和编辑三维模型的技术。
本章将介绍几何建模的基本原理和方法,包括点、线、面的描述,以及曲线和曲面的表示与构造等。
第八章:动画与模拟动画和模拟是计算机图形学中用于呈现动态场景的重要手段。
本章将介绍动画和模拟的基本原理和技术,包括关键帧动画、插值动画、物理模拟等,并讨论如何利用动画和模拟来实现逼真的动态效果。
第九章:图形学应用与未来发展计算机图形学的应用广泛,涵盖了游戏、电影、虚拟现实、计算机辅助设计等多个领域。
计算机图形学基础教程——第2章1
新思路-> DDA算法采用点斜式,可否采用其他的直 线表示方式?
清华大学计算机科学与技术系
计算机图形学基础
•基本思想
当前象素点为(xp, yp) 。下一个象素点为P1 或P2 。 设M=(xp+1, yp+0.5),为p1与p2
之中点,Q为理想直线与x=xp+1
x=x+1,e=e+k;
if (e0) { y++, e=e-1;} } } 清华大学计算机科学与技术系 计算机图形学基础
• 最终,Bresenham算法也是每个象素,需一个整数算法, 其优点是可以用于其他二次曲线。
至此,直线光栅化是否终结?
清华大学计算机科学与技术系
计算机图形学基础
新方法:
BRDC: binary representation of displacement code for line
2.1 直线段的扫描转换算法
• 直线的扫描转换: 确定最佳逼近于该直线的一组 象素,并且按扫描线顺序,对这些象素进行写 操作。
• 三个常用算法:
数值微分法(DDA)
3 2 1 Line: P0(0, 0)-- P1(5, 2)
中点画线法
Bresenham算法。
0
1
2
3
4
5
清华大学计算机科学与技术系
2.1.3 Bresenham算法
• 基本思想
– DDA算法采用点斜式,中点法采用隐式表示。 – 中点法可以有整数算法。
– 其他表示可以推出整数算法吗?
清华大学计算机科学与技术系
计算机图形学基础
– 过各行各列象素中心构造一组虚拟网格线。按直线从
计算机图形学基础教程PPT课件
经典的真实感图形学
光照模型
• 简单光照模型 • 局部光照模型 • 整体光照模型
绘制方法
• 光线跟踪 • 辐射度
加速算法及其他
• 包围体树、自适应八叉树等 • 阴影算法、纹理合成
Xfrog3.0生成的挪威云杉
1974年,在Colorado大学召开了第一届SIGGRAPH 年会, 并取得了巨大的成功
图形学的杂志和会议
会议:Siggraph, Eurograph, Pacific Graphics
Computer Graphics International,
Graphics Interface
杂志: ACM Transaction on Graphics
基于多层阴影翼的软影绘制
研究热点
真实感图形实时绘制
• 物体网格模型的面片简化,LOD, Occlusion culling
• 吴建华的牛头ห้องสมุดไป่ตู้
• 基于图象的绘制、基于Vedio绘制 • 画中游
画中游
Video from HKUST:
野外自然景物的模拟:山、水、云、树、草、火等
清 华 山 水
1999
1964年MIT的教授Steven A. Coons提出了超限插值的 新思想,通过插值四条任意的边界曲线来构造曲面。
• 58年提出“CAD”概念 • 图形学最高奖以他名字命名。
70年代
光栅图形学迅速发展
• 区域填充、裁剪、消隐等基本图形概念、及其相应算法 纷纷诞生
图形软件标准化
• 1974年,ACM SIGGRAPH的与ACM成立图形标准化委 员会,制定“核心图形系统”(Core Graphics System)
计算机图形学基础教程
ln N D ln S
⑶对于立体:
将立方体八等分, N=8,S=2,即8=23, 所以,分维D=3
⑷对于典型的分形曲线, 例如Koch曲线,构成方法 如下: 取一直线段,将其三等 分,保留两端的两段,将 中间一段拉起为等边三角 形的两条边。 N=4,S=3 分维D=ln4/ln3=1.26186
( ax , a y ) (cx , c y ) (d x , d y )
(bx , by )
bx ax 2(bx ax ) cx a x , c y a y ; d x ax , d y ay 3 3
8.2.2 Koch曲线
1904年,瑞典数学家科和(Koch,1870~1924) 发现一种曲线,其几何表示如下: 生成规则:取一段长度为L0的直线段,如图8-7 n=0 所示,将其三等分,保留两端的线段,将中间一段改 换成夹角为60°的两个L0/3等长直线段,如图8-7 n =1所示;将长度为L0/3的4个直线段分别三等分,并 将它们中间的一段改换成夹角为60°的两个L0/9等长 直线段,如图8-7 n=2所示。依此类推,便得到具有 自相似结构的折线。如果在等边三角形上按上述规则 在每边的中间各凸起一个小三角形,这样一直进行下 去,则曲线形状近似为似一朵雪花,称为Koch雪花, 如图8-11所示。
Computer Graphics
第八章 分形几何
本章内容
8.1 8.2 8.3 8.4 分形和分维 递归模型 L系统模型 IFS迭代函数系统模型
8.1分形和分维
真实的世界却并不规则,闪电不是直线,海岸 线不是弧线,云团不是球体,山峦也不是锥体。自 然界的许多对象是如此不规则和支离破碎,以致欧 氏几何学不能真实有效地再现大自然。 为了再现真实世界,必须选择新的工具,分形 几何学应运而生。分形几何是以非规则物体为研究 对象的几何学。由于闪电、海岸线、云团、山峦、 海浪、野草、森林、火光等非规则物体在自然界里 比比皆是,因此分形几何学又被称为描述大自然的 几何学。
计算机图形学基础教程
ቤተ መጻሕፍቲ ባይዱ
计算机图形学的定义
计算机图形学的发展历程
计算机图形学开始萌芽,当时的计算机只能显示简单的字符和线条。
1950年代
随着计算机硬件和软件技术的进步,计算机图形学开始进入快速发展阶段,出现了许多重要的技术和算法。
1970年代
计算机图形学进入商业应用阶段,开始广泛应用于电影、游戏、广告等领域。
1980年代
DirectX编程实践
总结词:WebGL是一种基于OpenGL ES的JavaScript API,用于在Web浏览器中实现3D图形渲染。详细描述:WebGL可以在浏览器中创建高性能的3D图形应用,适用于开发各种类型的可视化应用,如科学、工程、娱乐等领域的在线展示。编程实践学习WebGL的基本概念和架构。掌握WebGL的渲染流程和基本操作。学习WebGL中的着色器和纹理映射的使用。通过实践案例,掌握WebGL在Web应用开发中的应用。
比较两者的优缺点,以及在高性能计算中的应用。
01
02
03
VR硬件与软件
介绍如Oculus Rift、HTC Vive等主流虚拟现实硬件和相关软件。
AR硬件与软件
介绍如Google Glass、ARKit等增强现实硬件和软件平台。
VR/AR应用场景
探讨虚拟现实和增强现实在游戏、教育、医疗等领域的应用。
虚拟现实与增强现实技术
05
计算机图形学实践案例
总结词:OpenGL是一种跨平台的图形编程API,适用于开发高性能的2D和3D图形应用。详细描述:OpenGL提供了一套丰富的图形渲染功能,包括建模、材质、光照、纹理、动画等,开发者可以使用OpenGL进行低级别的图形渲染和控制。编程实践学习OpenGL的基本概念和架构。掌握OpenGL的渲染流程和基本操作。学习OpenGL中的着色器和缓冲区的使用。通过实践案例,掌握OpenGL在游戏、科学可视化等领域的应用。
第3讲 计算机图形学基础
抖动反走样算法:高分辨率计算,低分辨率显示
3.2 图形变换
• 图形变换的数学基础
– 向量运算 – 矩阵运算
• 二维变换 • 三维变换
矩形的包围盒是其本身,圆的包围盒是该圆的边界矩形 圆弧的包围盒的计算主要是由因弧的起始点和终止点,以及 与通过圆心的4个坐标轴相交的交点
自由曲线的包容盒则可根据离散的小直线段的起始点和终止 点比较后获得,若精确求解并不经济,因图形显示采用离散 多边形,且图形变换频繁。
复杂组合图形的包容盒则可以在简单图形的包容盒基础上 进行比较得到。
求交算法
求交计算是常用算法。区域填充时要求线段交点, 消隐算法需要直线和平面多边形的求交等。 求交运算比较复杂,为减小计算量,求交计算前, 先用凸包进行粗略比较,先排除显然不相交情形。 求交计算是CAD系统的重要部分,其准确性与效率 直接影响CAD系统的可靠性与实用性。
求交问题可以分为两类 : 求交点:线线求交、线面求交 求交线:面面求交
图形的具体应用范围很广,但是从基本的处理技术看只有两类: 一类是线条,如工程图、地图、曲线图表等;
另一类是明暗图,与照片相似。为了生成图形,首先要有原 始数据或数学模型,如工程人员构思的机械零件模型,飞机 的总体方案模型,地形航测的判读数据等等。这些数字化的 输入经过计算机处理后变成图形输出。
对字母T进行旋转变换 (旋转60°)
平移变换
上述四种变换都可以通过变换矩阵 必须满足下面的关系 x ' x x
y' y y
计算机图形学基础教程课件
n
n! Bi ,n (t ) t i (1 t ) n i i!(n i)!
Bernstein基函数有如下性质: 1 非负性 Bi ,n (t ) 0 2 权性
n B ( t ) ((1 t ) t ) 1 i ,n i 0 n
3 对称性 B (t ) B i ,n ni ,n (1 t ), i 1, 2,
7.4 BEZIER曲线
法国雷诺汽车公司的工程师Bezier 和法国雪铁龙汽车公司的de Casteljiau分别提出了一种新的参数曲 线表示方法,称为Bezier曲线。
Bezier的想法从一开始就面向几何而不是面 向代数。Bezier曲线由控制多边形惟一定义, Bezier曲线只有第一个顶点和最后一个顶点落在 控制多边形上,且多边形的第一条和最后一条边 表示了曲线在起点和终点的切矢量方向,其它顶 点则用于定义曲线的导数、阶次和形状,曲线的 形状趋近于控制多边形的形状,改变控制多边形 的顶点位置就会改变曲线的形状。绘制Bezier曲 线的直观交互性使得对设计对象的控制达到了直 接的几何化程度,使用起来非常方便。几种典型 的三次Bezier曲线如图7-7所示。
张力参数在Cardinal样条曲线中的作用
记s (1 u ) / 2, 用类似Hermite曲线样条中的方法, 将Cardinal边界条件代入式7-7可以得到: s 2 s s 2 s Pi 1 2s s 3 3 2s s P i 3 2 P(t ) [t t t 1] s 0 s 0 Pi 1 1 0 0 Pi 2 0 s 2 s s 2 s 2s s 3 3 2s s 称为Cardinal矩阵。 Mc s 0 s 0 1 0 0 0
计算机图形学基础教程第章
• 若遇到多边形相交或循环重叠的情况(如图f),还必须在相交 处分割多边形,然后进行判断。
计算机图形学基础教程第章 计算机图形学
P不遮挡Q的各种情况(ab,c,d,e) 及互相遮挡f 计算机图形学基础教程第章 计算机图形学
计算机图形学基础教程第章 计算机图形学
平面对直线段的遮挡判断算法
视点与线段同侧
包围盒不交
分段交替取值
线面相交
线面平行,线在面后
线面交与线段外
计算机图形学基础教程第章 计算机图形学
(1) 若线段的两端点及视点在给定平面的同侧,线段不被 给定平面遮挡,转7
(2) 若线段的投影与平面投影的包围盒无交,线段不被给 定平面遮挡,转7
2.7.3.2 Z缓冲区算法
• 帧缓存来存放每个象素的颜色值 – 初值可放对应背景颜色的值
• 深度缓存来存放每个象素的深度值。 – 初值取成z的极小值。
屏幕
帧缓冲器
Z缓冲器
每个单元存放对应 象素的颜色值
每个单元存放对应 象素的深度值
计算机图形学基础教程第章 计算机图形学
算法过程
– 在把显示对象的每个面上每一点的属性(颜色或灰度) 值填入帧缓冲器相应单元前,要把这点的z坐标值和z 缓冲器中相应单元的值进行比较。只有前者大于后者 时才改变帧缓冲器的那一单元的值,同时z缓冲器中 相应单元的值也要改成这点的z坐标值。
第二章 光栅图形学
2.1直线段的扫描转换算法 2.2圆弧的扫描转换算法 2.3多边形的扫描转换与区域填充 2.4字符 2.5裁剪 2.6反走样 2.7消隐
计算机图形学基础教程第章 计算机图形学
计算机图形学基础教程
边界像素的处理原则
在多边形填充过程中,常采用“下闭上开”和 “左闭右开”的原则对边界像素进行处理。
极值点的处理原则
对局部最高点,根据“下闭上开”的原则 不予填充。 对局部最低点的处理方法为,填充时设置 一个逻辑变量(初始值为假),每访问一个结 点,逻辑变量值取反一次,若逻辑变量值为真, 则填充该区间,这样可以保证局部最低点处理 正确。
边表 边表是按照扫描线顺序管理边的出现 情况的一个数据结构。首先,构造一个纵 向扫描线链表,链表的长度为多边形所占 有的最大扫描线数,链表的每个结点称为 桶,对应多边形覆盖的每一条扫描线。
将每条边的信息链入与该边最小y坐 标(ymin)相对应的桶处。也就是说,若 某边的较低端点为ymin,则该边就存放在 相应的扫描线桶中。
y
图 4-13 示例多边形
13 12 11 10 9 8 7 P2 6 5 4 3 2 1
P1
P0
P6
P4
P3
1 2 3 4 5 6 7 8
P5
9 10 11 12 13 x
对于图4-13所示的多边形,顶点表示法为:P0 (7,8),P1(3,12),P2(1,7),P3(3,
O
1), P4(6,5), P5(8,1), P6(12,9)。
S=12 S=11 S=10 S=9 S=8 S=7 S=6 S=5 S=4 S=3 S=2 S=1 3 7 P2P3 -1/3 P4P5 8 5 -1/2 7 1 12 12 P1P2 P0P1 -1 2/5
填充原理
多边形的有效边表填充算法的基本原理是按 照扫描线从小到大的移动顺序,计算当前扫描线 与多边形各边的交点,然后把这些交点按x值递 增的顺序进行排序、配对,以确定填充区间,然 后用指定颜色点亮填充区间内的所有像素,即完 成填充工作。有效边表填充算法通过访问多边形 覆盖区间内的每个像素,可以填充凸、凹多边形 和环,已成为目前最为有效的多边形填充算法。
计算机图形学基础教程——课件
实践项目与案例分析
3D建模与渲染项目
01
02
03
3D建模
学习使用3D建模软件(如 Blender、Maya等)进行 基本物体建模,包括几何 体、曲面和细分曲面等。
材质与纹理
掌握如何为模型添加材质 和纹理,以实现更逼真的 视觉效果。
光照与渲染
学习设置场景灯光,理解 不同类型的光源对渲染效 果的影响,以及如何使用 渲染器进行最终渲染。
光照模型
光源类型
包括点光源、方向光源和 聚光灯等,每种光源都有 不同的光照效果。
材质属性
包括颜色、纹理、透明度 等,影响物体对光的反射 和折射方式。
光照计算
根据光源和材质属性,计 算物体表面的光照强度和 颜色,以实现逼真的渲染 效果。
纹理映射
STEP 01
纹理定义
STEP 02
纹理映射技术
纹理是用于描述物体表面 细节的图像或图像集。
图像压缩
减少图像文件大小的过程,以加 快传输和存储速度。
图像分辨率
描述图像的细节和清晰度的度量 。
图像处理算法
用于改善图像质量或提取信息的 各种算法和技术。
计算机图形学中的数学基础
01
向量运算
在图形学中用于描述方向和位移的 基本数学概念。
插值和拟合
用于创建平滑曲线和表面的数学方 法。
03
02
矩阵运算
发展历程
起步阶段
20世纪50年代,计算机图形学开始起步,主要应用 于科学可视化。
发展阶段
20世纪80年代,随着计算机硬件和软件技术的进步 ,计算机图形学在电影、游戏等领域得到广泛应用。
成熟阶段
21世纪初,计算机图形学技术逐渐成熟,广泛应用于 教育、工业设计、医学影像等领域。
计算机图形学基础教程
计算机图形学基础教程计算机图形学是研究计算机如何生成、操作和显示图像的学科领域。
它与计算机科学、数学和物理学等学科有着密切的联系。
本篇文章将介绍计算机图形学的基础知识,旨在帮助初学者对这一领域有基本的了解。
一、计算机图形学的定义与应用范围1. 定义:计算机图形学是通过计算机生成和处理图像的学科领域。
2. 应用范围:计算机图形学广泛应用于电影制作、游戏开发、虚拟现实、计算机辅助设计等领域。
二、图像的表示与处理方法1. 位图与矢量图:位图是通过像素点表示的图像,矢量图是通过数学公式描述的图像。
2. 光栅化:将矢量图转化为位图的过程。
3. 图像处理:包括图像的增强、滤波、分割等操作,用于改善图像质量或提取图像特征。
三、计算机图形学中的几何转换1. 平移、旋转、缩放:分别指物体的平移、旋转和尺度变换。
2. 坐标系与变换矩阵:用于描述物体在二维或三维空间中的位置和方向。
四、视景投影与相机模型1. 正交投影与透视投影:分别用于模拟平行投影和透视效果。
2. 相机模型:用于模拟相机的成像原理,包括焦距、视角等参数。
五、光线追踪与渲染1. 光线追踪:通过模拟光线在场景中的传播路径,生成逼真的光影效果。
2. 渲染:根据场景中物体的材质、光照等属性,生成逼真的图像。
六、三维建模与动画1. 网格建模:使用三角形或多边形网格来描述物体的表面。
2. 曲面建模:使用数学曲面来描述物体的表面。
3. 动画:通过对三维模型的移动和变形,生成动态的图像。
七、计算机图形学中的算法与技术1. Bresenham算法:用于绘制直线和圆。
2. 贝塞尔曲线:用于实现曲线的平滑插值。
3. 着色模型:包括平面着色、Gouraud着色和Phong着色等方法。
八、计算机图形学的发展与挑战1. 发展历程:计算机图形学经历了从二维到三维、从实时渲染到光线追踪的发展过程。
2. 挑战与前景:目前的挑战包括实时渲染、虚拟现实、计算机辅助设计等领域的应用。
九、计算机图形学的学习方法与资源推荐1. 学习方法:通过阅读教材、参加课程和实践项目来提升对计算机图形学的理解和实践能力。
计算机图形学基础教程
7.1.2 曲线曲面的表示形式
曲线曲面的可以采用显式方程、隐函数 方程和参数方程表示。
首先看一下直线的表示形式:已知直线 的起点坐标P1(x1,y1)和终点坐标P2 (x2,y2),直线的显式方程表示为:
px[13]=180;py[13]=0;
px[14]=225;py[14]=71;
px[15]=270;py[15]=100;
px[16]=315;py[16]=71;
px[17]=360;py[17]=0;
}
void CTestView::DrawPoint()//绘制型值点 {
CClientDC dc(this); CPen NewPen,*OldPen; CBrush NewBrush,*OldBrush; NewPen.CreatePen(PS_SOLID,1,RGB(255,255,0)); OldPen=dc.SelectObject(&NewPen); NewBrush.CreateSolidBrush(RGB(0,0,0)); OldBrush=dc.SelectObject(&NewBrush); for(int i=1;i<N;i++) {
图7-1 汽车的曲面
7.1 基本概念
7.1.1 样条曲线曲面 7.1.2 曲线曲面的表示形式 7.1.3 拟合和逼近 7.1.4 连续性条件
7.1.1 样条曲线曲面
在汽车制造厂里,传统上采用样条 绘制曲线的形状。绘图员弯曲样条(如 弹性细木条)通过各型值点,其它地方 自然过渡,然后沿样条画下曲线,即得 到样条曲线(Spline Curve)。
计算机图形学基础教程
yw
1]
Sx 0
0
0
Sy
0
vxl wxl Sx vyb wyb Sy 1
写成方程为:
a
Sx
vxr wxr
vxl wxl
xv Sx xw vxl wxl Sx
yv
Sy
yw
vyb
wyb
Sy
b vxl wxl a
wyt
(xw,yw) 0000
wyb
vyt
(xv,yv) 0000
vyb
wxl
wxr
vxl
vxr
5-23窗口和视区的定义
1.将窗口左下角点(wxl,wyb)平移到观察坐标
系原点
1 0 0
T平移
0
1 0
wxl wyb 1
2. 对原点进行比例变换,使窗口的大小和视区 大小相等,将窗口变换为视区
并且yB <= y <= yT 否则,P点就在窗口外。
(xL,yB )
(xR,yT )
直线段裁剪
——直LAND直 线裁剪算法
5.5.1 编码原理 5.5.2 裁剪步骤 5.5.3 交点计算公式
在二维观察中,需要在观察坐标系下 根据窗口大小对用户坐标系中的二维图形进 行裁剪(clipping),只将位于窗口内的图 形变换到视区输出。直线的裁剪是二维图形 裁剪的基础,裁剪的实质是判断直线是否与 窗口相交,如相交则进一步确定位于窗口内 的部分。
Computer Graphics
第五章 二维变换和裁剪(2)
本章内容-2
5.4 二维图形裁剪 5.5 Cohen-Sutherland直线裁剪算法 5.6 中点分割直线段裁剪算法 5.7 梁友栋-Barsky直线段裁剪算法
计算机图形学基础教程附录(第二版)(孙家广 胡事民编著)
(4)两个矢量的点积
V1·V2=|V1||V2|cosθ=x1x2+y1y2+z1z2
其中,θ为两相量之间的夹角。
点积满足交换律和分配律:
V1·V2=V2·V1
V1·(V2+V3)=V1·V2+V1·V3
(5)两个矢量的叉积
叉积V1×V2是一个向量,而且满足:
①|V1×V2|=|V1||V2|sinθ,即以V1和V2为邻边所构成的平行四边形的面积。
齐次坐标的优点:
①它提供了用矩阵运算把二维、三维甚至高维空间中的一个点集,从一个坐标系变换到另一个坐标系的有效方法。
②它可以表示无穷远的点。n+1维的齐次坐标中如果h=0,实际上就表示了n维空间的一个无穷远点。对于齐次坐标[a,b,h],保持a,b不变,h→0的过程就表示了在二维坐标系中的一个点,沿直线ax+by=0逐渐走向无穷远处的过程。
即:
用齐次坐标表示为:
其中h=(zprp-z)/dp。
由比例关系,两者的变换公式为:
可以简单地将两者的关系表示为:
其中:
用矩阵表示为:
B.2二维图形的几何变换
正如我们在附录A中提到的那样,用齐次坐标表示点的变换将非常方便,因此在附录B中所有的几何变换都将采用齐次坐标进行运算。
二维齐次坐标变换的矩阵的形式是:
这个矩阵每一个元素都是有特殊含义的。其中 可以对图形进行缩放、旋转、对称、错切等变换; 是对图形进行平移变换;[gh]是对图形作投影变换;[i]则是对图形整体进行缩放变换。
C.3正平行投影(三视图)
投影方向垂直于投影平面的投影称为正平行投影,通常所说的三视图均属于正平行投影。三视图的生成就是把xyz坐标系的形体投影到z=0的平面,变换到uvw坐标系。一般还需将三个视图在一个平面上画出,这时就得到下面的变换公式,其中(a,b)为uv坐标系下的值,tx、ty、tz均如图C-3所示。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
若直线既不满足“简取”也不满足 “简弃”的条件,直线必然与窗口相交, 需要计算直线与窗口边界的交点。交点 将直线分为两段,其中一段完全位于窗 口外,可“简弃”之。对另一段赋予交 点处的区域编码,再次测试,再次求交, 直至找到确定完全位于窗口内的直线段 为止。 实现时,一般按固定顺序左 (x=wxl),右(x=wxr)、下(y=wyb)、 上(y=wyt)求解窗口与直线的交点。
规格化设备坐标系是将设备坐标系规格化到(0.0, 0.0)到(1.0,1.0)的范围内而定义的坐标系。规格化 设备坐标系独立于具体输出设备。一旦图形变换到规格 化设备坐标系中,只要作一个简单的乘法运算即可映射 到具体的设备坐标系中。由于规格化设备坐标系能统一 用户各种图形的显示范围,故把用户图形变换成规格化 设备坐标系中的统一大小标准图形的过程叫作图形的逻 辑输出。把规格化设备坐标系中的标准图形送到显示设 备上输出的过程叫作图形的物理输出。有了规格化设备 坐标系后,图形的输出可以在抽象的显示设备上进行讨 论,因而这种图形学又称为与具体设备无关的图形学。
在计算机图形学术语中,窗口最初是指 要观察的图形区域。但是随着Windows的出
现,窗口概念已广泛用于图形系统中,泛指
任何可以移动,改变大小、激活或变为无效
的屏幕上的矩形区域。在本章中,窗口回归
到其的原始定义,是在观察坐标系中确定输
出图形范围的矩形区域。
5.4.3 窗视变换矩阵
窗口和视区的边界定义如图5-23所示,假 定把窗口内的一点P(xw,yw)变换为视区中的 一点P’(xv,yv)。这属于相对于任一参考点 的二维几何变换,变换步骤为:
码RC=C4C3C2C1。
wyt 窗口 0000 wyb
1001
1000
1010
0001
0000
0010
wxl
wxr
0101
0100
0110
5-24 窗口坐标
5-25 区域编码
为了保证窗口内直线端点的编码为零,编码规则定义如下: 第一位:若端点位于窗口之左侧,即x<wxl,则C1=1,否则C1=0。 第二位:若端点位于窗口之右侧,即x>wxr,则C2=1,否则C2=0。 第三位:若端点位于窗口之下侧,即y<wyb,则C3=1,否则C3=0。 第四位:若端点位于窗口之上侧,即y>wyt,则C4=1,否则C4=0。
中点分割算法-求线段与窗口的交点
ห้องสมุดไป่ตู้
从P0出发找距离P0最近可见点采用中点分割方法 先求出P0P1的中点Pm, 若P0Pm不是显然不可见的,并且P0P1在窗口中有可见 部分,则距P0最近的可见点一定落在P0Pm上,所以用 P0Pm代替P0P1; 否则取PmP1代替P0P1。 再对新的P0P1求中点Pm。重复上述过程,直到PmP1长 度小于给定的控制常数为止,此时Pm收敛于交点。 从P1出发找距离P1最近可见点采用上面类似方法。
写成方程为:
xv S x xw vxl wxl S x yv S y yw v yb wyb S y
则窗视变换的展开式为:
xv a x w b yv c y w d
(5-12)
点的裁剪
图形裁剪中最基本的问题。 假设窗口的左下角坐标为 (xL,yB),右上角坐标为 (xR,yT),对于给定点P(x,y), 则P点在窗口内的条件是要满 足下列不等式: xL <= x <= xR 并且yB <= y <= yT 否则,P点就在窗口外。
y k ( x x1 ) y1
其中
k ( y 2 y1 ) /( x2 x1 )
(5-13)
与窗口上边界(y=wyt)或下边界(y=wyb)交 点的x坐标的计算公式为:
y y1 x x1 k
(5-14)
其中
k ( y2 y1 ) /( x2 x1 )
5.6中点分割直线段裁剪算法
5.7 梁友栋-BARSKY算法
设要裁剪的线段是P0P1。 P0P1 和窗口边界交于A,B,C,D四点, 见图。算法的基本思想是从 A,B和P0三点中找出最靠近P1的 点,图中要找的点是P0。从C,D 和P1中找出最靠近P0的点。图 中要找的点是C点。那么P0C就 是P0P1线段上的可见部分。
5-21三个窗口
5-22 三个视区
图形输出需要进行从窗口到视区的变换,只有窗口 内的图形才能在视区中输出,并且输出的形状要根据视 区的大小进行调整,这称为窗视变换(Window Viewport Transformation,WVT)。在二维图形观察中, 可以这样理解,窗口相当于一个一扇窗户,窗口内的图 形是希望看到的,就在视区中输出,窗口外的图形不希 望看到,不在视区中输出,因此需要对窗口中输出的二 维图形进行裁剪。
用来标识直线端点相对于窗口边界及其延长线的 位置。假设窗口是标准矩形,由上(y=wyt)、下 (y=wyb)、左(x=wxl)、右(x=wxr)四条边组成, 如图5-24所示。延长窗口四条边形成9个区域,如
图5-25所示。这样根据直线的任一端点P(x,y)所
处的窗口区域位置,可以赋予一组4位二进制区域
1 0 vxl
1 0 wxl
0 1 v yb
0 0 1
0 S x 0 0 1 0 0 Sy 0 0 1 0 0 1 vxl 0 1 v yb 0 0 1
因此,窗视变换矩阵为:
形变换到视区输出。直线的裁剪是二维图形
裁剪的基础,裁剪的实质是判断直线是否与 窗口相交,如相交则进一步确定位于窗口内 的部分。
5.5.1 编码原理
Cohen-Sutherland直线裁剪算法是最早流行 的编码算法。每条直线的端点都被赋予一组四位
二进制代码,称为区域编码(Region Code,RC),
P0 A
Pm B P1
5.6.2 中点计算公式 对于端点坐标为P0(x0,y0),P1(x1,y1) 的直线段,中点坐标的计算公式为:
x ( x0 x1 ) / 2
y ( y0 y1 ) / 2
(5-15)
对分辩率为2N*2N的显示器,上述二分过 程至多进行N次。 主要过程只用到加法和除法运算,适合 硬件实现,它可以用左右移位来代替乘 除法,这样就大大加快了速度。
Computer Graphics
第五章 二维变换和裁剪(2)
本章内容-2
5.4 5.5 5.6 5.7 二维图形裁剪 Cohen-Sutherland直线裁剪算法 中点分割直线段裁剪算法 梁友栋-Barsky直线段裁剪算法
5.4 二维图形裁剪
5.4.1 5.4.2 5.4.3 5.4.4 图形学中常用的坐标系 窗口和视区及窗视变换 窗视变换矩阵 点的裁剪
y
z
O
x
O x
y
5-17
二维和三维用户坐标系
2.观察坐标系(View Coordinate ,VC)
依据观察窗口的方向和形状在用户坐标系中 定义的坐标系称为观察坐标系,观察坐标系用 于指定图形的哪一部分可以输出范围。
y
y
x
O
x
5-18 观察坐标系
3.设备坐标系
(Device Coordinate ,DC)
显示器等图形输出设备自身都有一个坐标系 称为设备坐标系,也称为屏幕坐标系。设备坐标 系是二维坐标系,原点位于屏幕左上角,x轴垂 直向右,y轴垂直向下,基本单位为像素。
1
x O
O
y
1
5-19 设备坐标系
5-20 规格化设备坐标系
4.规格化设备坐标系 (Normalized Device Coordinate ,NDC)
5.4.1 图形学中常用的坐标系
计算机图形学中常用的坐标系有 用户坐标系、观察坐标系、设备坐标 系和规格化设备坐标系等。
1.用户坐标系(User Coordinate ,UC)
用户定义原始图形所采用的坐标系称为用户 坐标系。用户坐标系通常根据应用的需要可以选 择直角坐标系、圆柱坐标系、球坐标系以及极坐 标系等等。图5-17所示为常用的二维和三维用户 直角坐标系。
0 1 wyb T T平移 T比例 T反平移
代入,Sx和Sy的值,窗视变换矩阵为:
[ xv
yv 1] [ xw
yw
Sx 0 0 1] 0 Sy 0 vxl wxl S x v yb wyb S y 1
vxr vxl a S x w w xr xl b vxl wxl a 令 v v c S y yt yb wyt wyb d v yb wyb c
5.6.1 中点分割算法原理 5.6.2 中点计算公式
5.6.1 中点分割算法原理 Cohen-Sutherland裁剪算法提出对直 线段端点进行编码,并把直线段与窗口的关 系划分为三种情况,对前两种情况进行了 “简取”和“简弃”的简单处理。对于第三 种情况,需要根据公式(5-13)和(5-14) 计算直线段与窗口边界的交点。中点分割算 法对第三种情况做了改进,不需要求解直线 段与窗口边界的交点就可以对直线段进行裁 剪。
如何判定应该与窗口的哪条边求交? 编码中对应位为1的边。
1001 1000 1010 P1 0001 0000 0010 P3 P4 0101 0100 0110 P2
编码
线段裁剪
5.5.3 交点计算公式
对于端点坐标为P1(x1,y1)和P2(x2,y2)的直 线,与窗口左边界(x=wxl)或右边界(x=wxr) 交点的y坐标的计算公式为:
5.4.2 窗口和视区及窗视变换
在观察坐标系中定义的确定显示内容的 区域称为窗口。显然此时窗口内的图形是用 户希望在屏幕上输出的,窗口是裁剪图形的 标准参照物。 在设备坐标系中定义的输出图形的区域 称为视区。视区和窗口的大小可以不相同。 一般情况下,用户把窗口内感兴趣的图形输 出到屏幕上相应的视区内。在屏幕上可以定 义多个视区,用来同时显示不同的窗口内的 图形信息,图5-21定义了三个窗口内容用于 输出,图5-22的屏幕被划分为三个视区,对 三个窗口内容进行了重组。