赞
踩
目录
1.计算机图形学是什么
计算机图形学是研究通过计算机将数据转换为图形,并在专门的显示设备上显示的原理,方法和技术的学科。
图形系统,画线圆,裁剪,填充,几何变换,几何造型,真实感图形
①计算机辅助设计②科学可视化③计算机艺术④GIS⑤VR⑥计算机动画
建模、渲染、动画和人机交互
几何图形,真实感图形
几何要素,非几何要素
点阵法(图像),参数法(图形)
3D电影,3D游戏,医学影像,人脸识别,短视频特效
计算机图形学是研究通过计算机将数据转换为图形,并在专门的显示设备上显示的原理,方法和技术的学科。
高效化,简便化,多样化,现实化,人性化
控制点,三角网
VR技术,AR增强现实,立体投影技术,全息雾幕投影
图形显示器,交互式图形学,光栅化,真实感,人机交互
几何校正,几何变换,DEM,TIN,遥感数字图像处理、三维分析与建模
①诞生:50年代,旋风一号
②确立:60年代,计算机图形学之父
③理论发展及标准化:70年代,光栅图形学,真实感图形学,实体造型技术,图形软件标准化
④实用化:80年代,图形应用软件
⑤广泛应用:90年代,几何造型,真实感图形绘制,人机交互,与计算机网络紧密结合
伊凡·萨瑟兰德
旋风一号
1946年的ENIAC
远程教育的飞速发展等
造型技术,真实感图形绘制技术,人机交互技术,与计算机网络技术紧密结合
对细节进行分层,提高效率
以摄像机在现场拍摄的有限幅实景图像为样本,利用图像处理技术和视觉计算的方法,直接构建三维虚拟场景的技术
规则形体:欧氏几何方法
不规则形体:分形几何,粒子系统,纹理映射,实体造型
图形学的发展可以促进行业产能与相关关键技术的提高
VR眼镜,VR头盔,VR衣服
在显示屏上排列上千个密封的小低压气体室,通过电流激发使其发出肉眼看不见的紫外光,然后紫外光碰击后面玻璃上的红、绿、蓝3色荧光体发出肉眼能看到的可见光,以此成像。
电光效应,当液晶收到电压影响时,就会改变它的物理性质而发生形变,此时通过它的光的折射角度就会发生变化,而产生色彩。
在真空中,利用电磁场产生高速的,经过聚焦的电子束,偏转到屏幕的不同位置,轰击屏幕表面的荧光材料而产生图形
射线穿透法,影孔板法
构成屏幕(图像)的最小元素
一个阴极射线管在水平和垂直方向单位长度上能识别出的最大像素个数或显示器能显示像素的数量
一次扫描生成的影像,多少帧代表屏幕一秒刷新多少幅影像
指电子束对屏幕图像重复扫描的次数
通过数字电路控制打印喷头点阵喷射打印墨水完成打印的过程
利用激光扫描成像技术,使成像鼓充电带上静电后吸引碳粉,同时加热辊加热纸张把碳粉熔在纸张里面从而完成热成像的打印过程。
各向同性的透明物质在电场作用下显示出光学各向异性,物质的折射率因外加电场而发生变化的现象。
压电式,气泡式,静电式,固体式
随机扫描系统,光栅扫描系统
计算机系统中专门用来存放正在合成或显示的图像的存储器
分辨率M*N,颜色个数K,显存大小V,单位为字节
控制显示设备,通过访问帧缓冲来刷新屏幕
视频控制器,显存,显示处理器
确定一个象素集合及其颜色,用于显示一个图形的过程(从图元的参数表示形式转换成点阵表示形式的过程),称为图形的光栅化或扫描转换。
步骤:先确定有关象素,再用图形的颜色或其它属性,对象素进行某种写操作。
DDA算法,中点画线法,Bresenham算法
即数值微分算法,是用数值方法解微分方程,通过同时对x和y各增加一个小增量,计算下一步的x,y的值
完成图元的参数表示形式到点阵表示形式的转换,又叫扫描转换图元
先裁剪再扫描转换;先扫描转换再裁剪
斜率,宽度,时间复杂度,空间复杂度
- //直线DDA算法
- void LineDDA(int x0, int y0, int x1, int y1, int color)
- {
- float dx, dy, y, k;
- dy = y1 - y0;
- dx = x1 - x0;
- k = dy / dx;
- y = y0;
- for (int x = x0; x < x1; x++)
- {
- PutPixel(x, (int)(y + 0.5), color);
- y += k;
- }
- }
假定直线斜率k在0-1之间,在画直线段的过程中,当前像素点为(xp,yp),下一个像素点有两种可选择点P1(xp+1,yp)或P2(xp+1,yp+1)。若M=(xp+1,yp+0.5)为P1与P2之中点,Q为理想直线与x=xp+1的交点。当M在Q的下方,则P2应为下一个像素点;M在Q的上方,应取P1为下一个像素点。
- //中点画线法
- void MidPointLine(int x0, int y0, int x1, int y1, int color)
- {
- int a, b, d1, d2, d, x, y;
- a = y0 - y1;
- b = y1 - y0;
- d = a + a + b;
- d1 = a + a; //取正右方像素
- d2 = a + a + b + b; //取右上方像素
- x = x0, y = y0;
- PutPixel(x, y, color);
- while (x < x1)
- {
- if (d < 0)
- {
- x++;
- y++;
- d += d2;
- }
- else
- {
- x++;
- d += d1;
- }
- PutPixel(x, y, color);
- }
- }
过各行、各列像素中心构造一组虚拟网格线,按直线从起点到终点的顺序计算直线各垂直网格线的交点,然后确定该列像素中与此交点最近的像素
- //Bresenham画线算法
- void BresenhamLine(int x0, int y0, int x1, int y1, int color)
- {
- int x, y, dx, dy;
- float k, e;
- dx = x1 - x0;
- dy = y1 - y0;
- k = dy / dx;
- e = -0.5;
- x = x0, y = y0;
- for (int i = 0; i <= dx; i++)
- {
- PutPixel(x, y, color);
- x = x + 1;
- e = e + k;
- if(e>=0)
- {
- y++;
- e = e - 1;
- }
- }
- }
垂直线刷子,水平线刷子,方形刷子
考虑中心在原点、半径为整数R的八分圆,圆的其他部分可以通过一系列的简单反射变换得到。
- //中点画圆算法
- void MidPointCircle(int x0, int y0, int r, int color)
- {
- int x = 0, y = r, d = 1.25 - r;
- Circle8Points(x0, y0, x, y, color);
- while (x<=y)
- {
- if (d < 0)
- {
- d += 2 * x + 3;
- x++;
- }
- else
- {
- d += 2 * (x - y) + 5;
- x++;
- y--;
- }
- Circle8Points(x0, y0, x, y, color);
- }
- }
- void Circle8Points(int x0, int y0, int x, int y, int color)
- {
- PutPixel(x0 + x, y0 + y, color);
- PutPixel(x0 - x, y0 + y, color);
- PutPixel(x0 + x, y0 - y, color);
- PutPixel(x0 - x, y0 - y, color);
- PutPixel(x0 + y, y0 + x, color);
- PutPixel(x0 - y, y0 + x, color);
- PutPixel(x0 + y, y0 - x, color);
- PutPixel(x0 - y, y0 - x, color);
- }
54.字符生成方法
点阵字符,向量字符
55.矩形填充算法,最核心的循环代码
- //矩形填充算法
- void FillRectangle(Rectangle* rect, int color)
- {
- int x, y;
- for (y = rect->ymin; y <= rect->ymax; y++)
- {
- for (x = rect->xmin; x <= rect->xmax; x++)
- {
- PutPixel(x, y, color);
- }
- }
- }
顶点表示,点阵表示
奇内偶外,异1同2
求交,排序,配对,填色
第1项,存当前扫描线与边的交点坐标x值;
第2项,存从当前扫描线到下一条扫描线间x的增量dx;
第3项,存该边所交的最高扫描线的y值ymax;
第4项,存指向下一条边的指针。
内点表示,边界表示
- //内点表示多边形的种子填充算法
- void FloodFill4(int x, int y, int oldColor, int newColor)
- {
- if (GetPixel(x, y) == oldColor)
- {
- PutPixel(x, y, newColor);
- FloodFill4(x, y + 1, oldColor, newColor);
- FloodFill4(x, y - 1, oldColor, newColor);
- FloodFill4(x - 1, y, oldColor, newColor);
- FloodFill4(x + 1, y, oldColor, newColor);
- }
- }
-
- //边界表示多边形的种子填充算法
- void BoundaryFill4(int x, int y, int oldColor, int newColor)
- {
- int color;
- color = GetPixel(x, y);
- if ((color != oldColor) && (color != newColor))
- {
- PutPixel(x, y, newColor);
- FloodFill4(x, y + 1, oldColor, newColor);
- FloodFill4(x, y - 1, oldColor, newColor);
- FloodFill4(x - 1, y, oldColor, newColor);
- FloodFill4(x + 1, y, oldColor, newColor);
- }
- }
①线段是否全不在窗口内,若是,则弃,结束。
②线段是否全在窗口内,若是,则取,转到步骤4。
③计算该线段与窗口边界的交点,以此将线段分成两部分;丢弃不可见的部分,对剩下的部分转到步骤2。
④保留并显示该线段。
将区域分成九个区域,按编码规则编码
65.中点分割裁剪算法原理
设左边区域第1位为1,右边三个第2位为1,下边三个第3位为1,上边三个第4位为1,窗口区域都为0
若两端点编码都为0,则在窗口内,无需裁剪;
若两端点编码求与为非0,则线段完全不可见;
若两端点编码求与为0,则可见性要进一步判断。
用窗口的每一条边去依次裁剪多边形,四条边裁剪完后的结果即为结果多边形
是指对图形的几何信息经过几何变换后产生新的图形;二维和三维图形的平移、旋转、比例和对称等几何变换,以及投影、透视变换等。
图形变换是计算机图形学的基础内容之一,通过图形变换,可由简单图形生成复杂图形,可用二维图形表示三维形体,甚至可对静态图化进行快速变换而数得图形的动态显示效果。
几何变换(二维三维),投影变换(平行投影,透视投影);
二维变换矩阵,平移变换,比例变换,对称变换,旋转变换,错切变换,复合变换
坐标系变换
齐次坐标就是将一个原本是n维的向量用一个n+1维向量来表示,是指一个用于投影几何里的坐标系统。
因为该坐标允许平移、旋转、缩放及透视投影等可表示为矩阵与向量相乘的一般向量运算。依据链式法则,任何此类运算的序列均可相乘为单一矩阵,从而实现简单且有效之处理。
齐次坐标表示是计算机图形学的重要手段之一,它既能够用来明确区分向量和点,同时也更易用于进行仿射(线性)几何变换。
二维平移:
二维旋转:
二维缩放:
三维平移:
三维旋转:
绕X轴:
绕Y轴:
绕Z轴:
三维缩放:
由两种及两种以上的基本变换组合而成的变换称为复合变换。
在连续变换时,先计算变换矩阵,再计算坐标
几何造型就是用计算机系统来表示、控制、分析和输出三维形体,表示形体的两种模型有用欧式几何描述的数据模型和用分形几何描述的过程模型。
数据模型和过程模型。
数据模型分为线框模型、表面模型、实体模型。
过程模型包括:分形几何,随机插值模型、迭代函数系统、L系统、粒子系统等。
线框造型系统,曲面造型系统,实体造型系统
①平移对象使参照(基准)点移到原点
②绕坐标原点旋转
③平移对象使基准点回到原始位置
①扫描变换(Sweep)表示模型
②构造实体几何(CSG)表示模型
③边界表示(B-Rep)模型
④空间分割模型
①分形几何
描述非规则的自然事物
②随机插值模型
不是事先决定各种图素和尺度,而是用一个随机过程的采样路径作为构造模型的手段。
③迭代函数系统
生成规则:取一等边三角形,连接各边中点将原三角形分成四个小三角形,然后舍弃位于中间的一个小三角形,将剩下的其余三个小三角形按同样方法继续分割,并舍弃位于中间的那个三角形,如此不断地分割与舍弃,就能得到中间有大量孔隙的Sierpinski垫片。
④基于文法的模型:L系统
用文法表示植物的拓扑结构;通过图形学方法生成逼真的画面。
⑤粒子系统
用大量的粒子图元(Particle)来描述景物。每个粒子都有一组随机取值的属性,如起始位置、初速度、颜色及大小。
①虚拟场景标识
②取景变换和光栅化
③消隐
④光照计算
①先将Z缓冲器中个单元的初始值置为最小值。
②当要改变某个像素的颜色值时,首先检查当前多边形的深度值是否大于该像素原来的深度值(保存在该像素所对应的Z缓冲器的单元中)
A:如果大于,说明当前多边形更靠近观察点,用它的颜色替换像素原来的颜色;
B:否则说明在当前像素处,当前多边形被前面所绘制的多边形遮挡了,是不可见的,像素的颜色值不改变
根据光学物理的有关定律,计算物体表面各点投射到观察者眼中的光线的光亮度和色彩组成的数学公式。
光照模型就是一个数学模型,我们可以用这个数学模型求出物体表面每一点的亮度,因此它也叫浓淡模型。
①均匀着色
任取多边形上一点,利用光照明方程计算出它的颜色,用这个颜色填充整个多边形
优点:每个多边形只需计算一次光照明方程,速度快
缺点:相邻多边形颜色过渡不光滑
②光滑着色
采用插值方法,主要有Gouraud(高洛德)方法和Phone(冯)方法
优点:颜色过渡均匀,图形较平滑
缺点:计算量大
纹理映射是将纹理图象值映射到三维物体表面的技术,实质上是建立纹理和三维物体之间的对应关系式。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。