[互联网]计算机图形学基本图形的生成与显示.ppt
《[互联网]计算机图形学基本图形的生成与显示.ppt》由会员分享,可在线阅读,更多相关《[互联网]计算机图形学基本图形的生成与显示.ppt(79页珍藏版)》请在三一办公上搜索。
1、跨入计算机殿堂的入门篇,计算机图形学施智平,2,如何在指定的输出设备上根据坐标描述构造基本二维几何图形(点、直线、圆、椭圆、多边形域、字符串及其相关属性等)。,第2章 基本图形的生成与显示,3,图形生成的概念直线段的扫描转换圆的扫描转换椭圆的扫描转换,第2章 基本图形的生成与显示,图形的生成:是在指定的输出设备上,根据坐标描述构造二维几何图形。图形的扫描转换:在光栅显示器等数字设备上确定一个最佳逼近于图形的像素集的过程。,4,图1.用像素点集逼近直线,图形生成和扫描转换的概念,1 直线的扫描转换,直线的绘制要求(1)直线要直;(2)直线的端点要准确,无断裂;(3)直线的亮度、色泽要均匀;(4)
2、画线的速度要快;(5)具有不同的色泽、亮度、线型等。,5,直线的扫描转换,6,在屏幕像素点阵中点亮最佳逼近于理想直线的像素点集的过程解决的问题:给定直线两端点P0(x0,y0)和P1(x1,y1),确定其他像素点,画出该直线数值微分法中点画线算法Bresenham算法,数值微分法(DDA法),7,直线P0 P1的斜率:,图2.DDA算法原理,从P0 到P1的点坐标满足,Pi(x,round(y+0.5)浮点乘法,假发,取整运算,数值微分法(DDA法),迭代增量计算公式:,对点阵而言,相邻的点,x和y只能为1(-1)或0,8,数值微分法(DDA法),9,|k|1的情况,x方向为主位移方向,x=1
3、:,|k|1的情况,y方向为主位移方向,y=1:,void DDALine(float x1,float y1,float x2,float y2,int color,HDC hdc)float k,dx,dy,x,y;dx=x2-x1;dy=y2-y1;if(fabs(dx)=fabs(dy)k=dy/dx;else k=dx/dy;/1/k x=x1;y=y1;,while(x=dy)y=y+k;x+;else x=x+k;y+;,10,数值微分法(DDA法)特点,迭代增量算法直观、易实现不利于用硬件实现(浮点数),11,给定理想直线的起点坐标为P0(x0,y0),终点坐标为P1(x1,y
4、1),则直线的隐函数方程为:,12,其中,直线的斜率:,直线水平方向位移:直线垂直方向位移:,中点画线算法,中点画线算法,直线与空间的关系,13,图3 直线将平面分为三个区域,假定0k1,即0y/x1,x是最大位移方向当前点 P 的下一点只能取 Pu 或 Pd,可用中点与直线的位置关系来判定,中点偏差判别式,图4 中点算法生成直线的原理,中点M坐标为(xi+1,yi+0.5),判别式:,则有:,图5 中点算法生成直线的原理,M(x i2,y i1.5),M(x i1,y i0.5),P(xi,yi),M(x i1,y i0.5),M(x i2,y i0.5),P(xi,yi),中点偏差判别式的
5、递推,d0,d0,中点偏差判别式的递推公式在主位移x方向上已走一步的情况下,现在考虑沿主位移方向再走一步,应该选择哪个中点代入中点偏差判别式以决定下一步该点亮的像素?如图所示,分两种情况讨论。,(1)当d0时,取右上方的Pu,当d0时,取正右方的Pd,中点偏差判别式的递推公式,直线的起点坐标为P0(x0,y0),x为主位移方向。因此,第一个中点是(x01,y00.5),相应的d的初始值为:,其中,因为P0(x0,y0)在直线上,所以,则:,中点偏差判别式的初始值,19,改进:用2dx代替d,令D2dx 则:,中点算法的改进整数化判别式,输入直线的两端点P0(x0,y0)和P1(x1,y1)。计
6、算初始值x、y、D=x-2y、x=x0、y=y0。绘制点(x,y)。判断D的符号。若D0,则(x,y)更新为(x+1,y+1),D更新为D+2x-2y;否则,(x,y)更新为(x+1,y),D更新为D-2y。当直线没有画完时,重复上一步骤,否则结束。程序演示,20,中点算法算法步骤,Bresenham画线算法,算法原理:考虑0k1的情况,x方向上每次递增一个单位,而y方向的增量为1或0,它取决于实际直线与相邻象素点的距离,这一距离称为误差项,21,假定直线段的0k1,22,Bresenham算法,图10 Bresenham算法绘制直线的原理,Bresenham算法,Bresenham算法原理,
7、24,误差项的计算d0=0,因为P0在直线上x每走一步,误差项d=d+k 一旦d0.5,y+,d=d-1,改进1:令e=d-0.5,改为只判断符号,e0=-0.5,每走一步:e=e+kif(e0)then e=e-1,y+,误差项的计算d0=0,每走一步:d=d+k if(d0.5)then d=d-1,y+,改进2:用E=e*2x来替换e,去掉k,e0=-0.5每走一步有e=e+k,x+if(e0)then e=e-1,y+,E0=-0.5*2x=-x每走一步有E=(e+k)*2x=E+2y if(e0)then E=(e-1)*2x=E-2x,Bresenham算法算法步骤,1.输入直线的
8、两端点P0(x0,y0)和P1(x1,y1)2.计算初始值x、y、e=-x、x=x0、y=y03.绘制点(x,y)4.e更新为e+2y,判断e的符号:若e0,则(x,y)更新为(x+1,y+1),将e更新为e-2x;否则,(x,y)更新为(x+1,y)5.当直线没有画完时,重复步骤3和4;否则结束,27,2 圆的扫描转换,解决的问题:绘出圆心在原点,半径为整数R的圆x2+y2=R2。,28,P(-y,x),P(-y,-x),x=-y,P(-x,-y),P(x,-y),P(y,-x),P(y,x),P(x,y),P(-x,y),x=y,x=0,y=0,圆的对称性,八分法画圆,只要绘制出第一象限内
9、的1/8圆弧,根据对称性就可绘制出整圆,这称为八分法画圆算法假定第一象限内的任意点为P(x,y),可以顺时针确定另外7个点:P(y,x)P(y,x),P(x,y),P(x,y),P(y,x),P(y,x),P(x,y)。,圆的扫描转换,解决问题:,31,图 2 1/8圆弧,圆的扫描转换,简单方程生成圆弧中点画圆算法Bresenham算法,32,简单方程产生圆弧,算法原理:利用其函数方程,直接离散计算。,33,圆的函数方程为:,34,圆的极坐标方程为:,简单方程产生圆弧,中点画圆,构造函数F(x,y)=x2+y2-R2。对于圆上的点,F(x,y)=0;对于圆外的点,F(x,y)0;对于圆内的点,
10、F(x,y)0。,35,给定圆心在原点,半径为整数R的圆,其方程为,理想圆,F(x,y)0,F(x,y)=0,F(x,y)0,图3 中点画圆的原理,中点画圆,当d0时,下一点取 Pu(xi+1,yi);当d0时,下一点取 Pd(xi+1,yi-1),38,构造判别式:,误差项的递推(d0),图14 d0的情况,误差项的递推(d0),图15 d0的情况,中点画圆,判别式的初始值,41,改进:用d-0.25代替d此时有:,d为整数,中点画圆算法步骤,1.输入圆的半径R。2.计算初始值d=1-R、x=0、y=R。3.绘制点(x,y)及其在八分圆中的另外七个对称点。4.判断d的符号:若d0,d更新为d
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 互联网 计算机 图形学 基本 图形 生成 显示
链接地址:https://www.31ppt.com/p-4602710.html