第一章绪论计算机图形学的基本概念计算机图形学:是研究怎样用数字计算机生成、处理和显示图形的一门学科。
图形:计算机图形学的研究对象。
构成图形的要素:几何要素——几何属性(点、线、面、体)非几何要素——视觉属性(明暗、灰度、色彩、纹理、透明性、线型、线宽)表示图形的方法:点阵表示;参数表示研究内容计算机中表示图形、以及利用计算机进行图形的计算、处理和显示的相关原理与算法,构成了计算机图形学的主要研究内容。
图形硬件、图形标准、图形交互技术、光栅图形生成算法、曲线曲面造型、实体造型、真实感图形计算与显示算法,以及科学计算可视化、计算机动画、自然景物仿真、虚拟现实等。
计算机图形学的应用图形用户界面;计算机辅助设计与制造(CAD/CAM);4 科学计算的可视化:CT;真实感图形实时绘制与自然景物仿真;地理信息系统(GIS);Virtual Reality(虚拟现实、灵境);事务和商务数据的图形显示;地形地貌和自然资源的图形显示过程控制及系统环境模拟;电子出版及办公自动化;计算机动画及广告计算机艺术;科学计算的可视化;工业模拟;计算机辅助教学当前研究热点:1.真实感图形实时绘制2.野外自然景物的模拟3 与计算机网络技术的紧密结合4 计算机动画5 用户接口6 计算机艺术7 并行图形处理所熟悉的图形软件包图形软件的标准GKS (Graphics Kernel System) (第一个官方标准,1977)PHIGS(Programmer’s Herarchical Iuteractive Graphics system)一些非官方图形软件,广泛应用于工业界,成为事实上的标准 DirectX (MS)Xlib(X-Window系统)OpenGL(SGI)Adobe公司PostscriptCAGD(Computer Aided Geometric Design)图形系统的功能1.计算功能2.存储功能3.对话功能4.输入功能5.输出功能图形输入设备1 键盘和鼠标2 跟踪球和空间球3 光笔4 数字化仪5 触摸板6 扫描仪图形输出设备显示器1 阴极射线管显示器2 液晶显示器(LCD)3 发光二极管显示器4 等离子显示器5 等离子显示器6发光聚合物技术图形绘制设备针式打印机喷墨打印机激光打印机静电绘图仪笔式绘图仪3章多边形3.4 多边形的扫描转换与区域填充☐多边形扫描转换与区域填充可以统称区域填充,就是如何用颜色或图案来填充一个二维区域。
填充主要做两件工作:一是确定需要填充的范围,二是确定填充的内容。
一般区域填充指的是已知区域内一个种子,然后由种子向周围蔓延填充规定区域。
☐方法:⏹扫描线法:x-扫描线法-〉有序边表法,边填充算法⏹种子填充算法(区域填充)多边形扫描转换与区域填充方法比较:联系:都是光栅图形面着色,用于真实感图形显示。
可相互转换。
多边形的扫描转换转化为区域填充问题:当给定多边形内一点为种子点,并用Bresenham或DDA算法将多边形的边界表示成八连通区域后,则多边形的扫描转换转化为区域填充。
区域填充转化为多边形的扫描转换;若已知给定多边形的顶点,则区域填充转化为多边形的扫描转换。
不同点:1.基本思想不同;前者是顶点表示转换成点阵表示,后者只改变区域内填充颜色,没有改变表示方法。
2.对边界的要求不同前者只要求扫描线与多边形边界交点个数为偶数。
后者:区域封闭,防止递归填充跨界。
3.基本的条件不同前者:从边界顶点信息出发。
后者:区域内种子点。
3.7 反走样用于减少或消除这种效果的技术,称为反走样(antialiasing)。
方法:☐提高分辨率:提高分辨率、简单取样、加权取样(过取样(supersampling),或后滤波)☐区域取样(area sampling),或前滤波5章:裁剪5.3 二维图形裁剪5.4 投影变换5.1 坐标系统及其变换-坐标系造型坐标系用户坐标系直角坐标系、仿射坐标系、圆柱坐标系、球坐标系、极坐标系观察坐标系规格化的设备坐标系设备坐标系5.4 投影变换投影分类☐平面几何投影对平面几何投影,按照投影线角度的不同,有两种基本投影方法:1平行投影(parallel projection)。
它使用一组平行投影将三维对象投影到投影平面上去。
2透视投影(perspective projection)。
它使用一组由投影中心产生的放射投影线,将三维对象投影到投影平面上去。
(一)三视图三视图:正视图、侧视图和俯视图5.4.2透视投影灭点☐不平行于投影面的平行线的投影会汇聚到一个点,这个点称为灭点(Vanishing Point)。
☐坐标轴方向的平行线在投影面上形成的灭点称作主灭点。
☐一点透视有一个主灭点,即投影面与一个坐标轴正交,与另外两个坐标轴平行。
☐两点透视有两个主灭点,即投影面与两个坐标轴相交,与另一个坐标轴平行。
☐三点透视有三个主灭点,即投影面与三个坐标轴都相交。
☐观察投影7 章图形的几何变换从应用角度讲,图形变换可分为两种:☐几何变换(geometrical transformation ):几何变换是指坐标系不动,形体相对于坐标系在移动,如图形的缩放、平移、变形等。
☐视像变换(viewing transformation):也称观察变换或者取景变换,是指形体不动,而所处的坐标系在变换。
图形变换是计算机图形学基础内容之一,其作用为:☐把用户坐标系与设备坐标系联系起来;☐可由简单图形生成复杂图形;☐可用二维图形表示三维形体;☐动态显示综合题4道一:2章:基本图形生成技术3.1直线段的扫描转换算法☐DDA算法☐中点画线法☐Bresenham画线算法数值微分(DDA)法:void DDALine(int x0,int y0,int x1,int y1,int color)CDC*pDC=GetDC();int x;float dx,dy,y,k;dy=y1-y0; dx=x1-x0;k=dy/dx;y=y0;for(x=x0;x<=x1;x++){ pDC->SetPixel(x,int(y+0.5), color);y=y+k;}}二、中点画线法void Midpoint Line (int x0,int y0,int x1, int y1,int color){ CDC*pDC=GetDC();int a, b, d1, d2, d, x, y;a=y0-y1; b=x1-x0; d=2*a+b;d1=2*a ; d2=2* (a+b);x=x0; y=y0;pDC->SetPixe(x, y, color);while (x<x1){ if (d<0) {x++; y++; d+=d2; }else {x++; d+=d1;}pDC->SetPixe(x, y, color);}}三、Bresenham画线算法算法步骤☐1.输入直线的两端点P0(x0,y0)和P1(x1,y1)。
☐2.计算初始值dx、dy、e=-dx、x=x0、y=y0。
☐3.绘制点(x,y)。
☐4.e更新为e+2dy,判断e 的符号。
若e>0,则(x,y)更新为(x+1,y+1),同时将e更新为e-2dx;否则(x,y)更新为(x+1,y)。
☐5.当直线没有画完时,重复步骤3和4。
否则结束。
☐Bresenhamline(int x0,int y0,int x1,int y1,int color) ☐{ CDC*pDC=GetDC();☐int x,y,dx,dy,e;☐Dx=x1-x0;☐Dy=y1-y0;☐e=-dx;x=x0;y=y0;☐While (x<=x1)☐{ pDC->SetPixe(x, y, color);☐X++;☐e=e+2*dy;☐If (e>0)☐{ y++;☐e=e-2*dx;☐}☐}☐}4章:圆的扫描转换算法圆的扫描转换⏹角度DDA法⏹中点画圆法⏹Bresenham画圆算法⏹生成圆弧的正负法⏹圆的内接正多边形逼近法3.2.2中点画圆法:MidpointCircle(int r, int color){ CDC*pDC=GetDC();int x,y;float d;x=0; y=r; d=1-r;pDC->SetPixe(x, y,color);while(x<y){if(d<0){ d+ = 2*x+3; x++ }else{d+ = 2*(x-y) + 5;x++;y--; }pDC->SetPixe(x, y, color);}}3.2.3 Bresenham画圆算法OnBresenhamcircle(int r ,int c) {CDC* pDC=GetDC();int x,y,p,k;x=0,y=r,p=3-2*r; while(x<y){pDC->SetPixel(x, y, c);if (p<0)p=p+4*x+6;else{p=p+4*(x-y)+10;y-=1;}x+=1;}if(x==y)pDC->SetPixel(x, y, c); ReleaseDC(pDC);}二:扫描线填充算法:(综合题)(1)初始化:堆栈置空。
将种子点(x,y)入栈。
(2)出栈:若栈空则结束。
否则取栈顶元素(x , y ),以y 作为当前扫描线。
(3)填充并确定种子点所在区段:从种子点(x ,y ) 出发,沿当前扫描线向左、右两个方向填充,直到边界。
分别标记区段的左、右端点坐标为xl 和xr 。
(4)并确定新的种子点:在区间[xl ,xr]中检查与当前扫描线y 上、下相邻的两条扫描线上的象素。
若存在非边界、未填充的象素,则把每一区间的最右象素作为种子点压入堆栈,返回第(2)步。
上述算法对于每一个待填充区段,只需压栈一次;因此,扫描线填充算法提高了区域填充的效率。
三:()()()()21221122110100011010001110100011''1***t t y x y x y x T T y x T T T T y xT T y x y x P =⎪⎪⎪⎭⎫ ⎝⎛⎪⎪⎪⎭⎫ ⎝⎛=⎪⎪⎪⎭⎫ ⎝⎛=四:Cohen-Sutherland算法如图所示,叙述对线段p1p2进行Cohen-Sutherland(编码法)法裁剪的过程⏹1)如图:求直线段所在区号:code1=0001,code2=0100.⏹(2) 短线段p1,p2做简单测试,code1∪code2 ≠0,code1∩code2=0,属于第三种情况,即不能简单接受,也不能简单裁剪掉⏹(3)由code1=0001可知p1在窗口左边,计算p1p2与窗口左边界的交点p3,并求p3所在区号,code3=0000,说明p3在窗口内,而p1p3必在窗口外,应舍弃。