3Bresenham画圆算法(013)1、应用Bresenham关于直线的基本方法于圆弧的生成(xi.y)(yi-1)(R/V2,R/V2)2、简单起见,只对(0,R)到(R/V2,R/2)进行生成,如右图,其余部分可通过对称性来实现。取fi=xi+12+yi?-R?表示(xi+1,yi)到圆周的"距离”gi=xi+12+yi-12-R2表示(xi+1,yi-1)到圆周的“距离"图2-6固狐的快速生成令ei=|fil-Il g:lei≥0,,则取(xi+1,yi-1)为下一个点,否则(xi+1,y)为下一个点。下面求递推公式:由 fi=xi++2+y:2-R2得 f=(x;+1) 2+y:2-R2gi=Xi+12+yi-12-R2(1)gi=(xi+1) 2+(yi-1)2-R2(2)已知ei<0,(xi+1,yi)为下一点,将坐标代入(1)可得fi+1=[(xi+1)+1]2+y:2-R2 = fi + 2xi+ 3同理 gi+1=fi+1-2yi+ 1对于ei≥0 可得fi+1=gi + 2xi+ 3gi+1= fi+1 2yi+ 3归纳算法为:(1)fi=1;go=2(1-R)(2)对i=0到i=R/~/2+1/2-1有xi+1=xi+1则yi+1,fi+1,gi+I的递推关系如上
3 Bresenham 画圆算法 1、应用 Bresenham 关于直线的基本方法于圆弧的生成; 2、简单起见,只对(0,R)到( R / 2, R / 2 )进行生成,如右 图,其余部分可通过对称性来实现。 取 fi=xi+12+yi 2 -R 2 表示(xi+1, yi)到圆周的“距离” gi=xi+12+yi-1 2 -R 2 表示(xi+1, yi-1)到圆周的“距离” 令 ei = |fi |-| gi| ei≥0, 则取 (xi+1, yi-1)为下一个点,否则(xi+1, yi) 为下一个点。 下面求递推公式: 由 fi=xi+12+yi 2 -R 2 得 fi=(xi+1) 2+yi 2 -R 2 gi=xi+12+yi-1 2 -R 2 (1) gi=(xi+1) 2+(yi -1) 2 -R 2 (2) 已知 ei < 0, (xi+1, yi)为下一点,将坐标代入(1)可得 fi+1=[(xi+1)+1] 2+yi 2 -R 2 = fi + 2xi+ 3 同理 gi+1= fi+1 – 2yi+ 1 对于 ei≥0 可得 fi+1= gi + 2xi+ 3 gi+1= fi+1 – 2yi+ 3 归纳算法为:(1) fi =1 ; g0 = 2 (1-R) (2)对 i=0 到 i= R / 2 +1/2-1 有 xi+1=xi+1 则 yi+1, fi+1, gi+1 的递推关系如上
2周次时间2007年3月14日第3、4节第二章计算机绘图与程序设计章节第四节BASIC语言图形程序设计名称第五节C语言图形程序设计授课教学理论课()、实践课()、实习(2时数方式掌握TurboC的绘图环境,熟悉TurboC绘图函数的使用。教学目的课堂讲授结合多媒体。教学方法能够进行TurboC绘图环境的初始化和设置,能够利用TurboC绘图函数进行图形程序设计:教学要求1、字符生成(补充内容)2、Basic语言图形程序设计(自学内容)图形环境基本绘图函数3、C语言图形程序设计(重点讲授内容)教学图形环境内容基本绘图函数图形程序实例
周 次 2 时 间 2007 年 3 月 14 日第 3、4 节 章 节 名 称 第二章 计算机绘图与程序设计 第四节 BASIC 语言图形程序设计 第五节 C 语言图形程序设计 授 课 方 式 理论课( √ )、实践课( )、实习( ) 教学 时数 2 教 学 目 的 掌握 Turbo C 的绘图环境,熟悉 Turbo C 绘图函数的使用。 教 学 方 法 课堂讲授结合多媒体。 教 学 要 求 能够进行 Turbo C 绘图环境的初始化和设置; 能够利用 Turbo C 绘图函数进行图形程序设计; 教 学 内 容 1、字符生成(补充内容) 2、Basic 语言图形程序设计(自学内容) 图形环境 基本绘图函数 3、C 语言图形程序设计 (重点讲授内容) 图形环境 基本绘图函数 图形程序实例
重点:TurboC实现图形的绘制程序设计:教学难点:TurboC图形环境设置;绘图函数的参数意义和调用。重点难点PP54第6题将Basic改成TurboC,盒型自行选择,尺寸根据测量值按比例缩放。讨论第7题练习论文:包装CAD在国内外的研究进展(题目自拟)作业要求1、摘要、内容、结论、参考文献2、参考相关文献至少10篇3、字数5000左右第12周提交电子版教材王德忠主编:包装计算机辅助设计,印刷工业出版社,1996。参考主要参考书:孙家广:计算机图形学(第三版),清华大学出版社,1999资料李兰友主编:TurboC实用图形程序设计,天津科技翻译出版公司,1994教研室主任审批意见学生虽然刚学过C语言程序设计,但对于模块化程序设计思想和子程序形参等理解仍有一定难度,以后要加强实例程序的详细解释。教学后记
教 学 重 点 难 点 重点:Turbo C 实现图形的绘制程序设计; 难点:Turbo C 图形环境设置;绘图函数的参数意义和调用。 讨 论 练 习 作 业 PP54 第 6 题 将 Basic 改成 Turbo C,盒型自行选择,尺寸根据测量值按比例缩 放。 第 7 题 论文:包装 CAD 在国内外的研究进展 (题目自拟) 要求: 1、摘要、内容、结论、参考文献 2、参考相关文献至少 10 篇 3、字数 5000 左右 第 12 周提交电子版 参 考 资 料 教材 王德忠主编:包装计算机辅助设计,印刷工业出版社,1996。 主要参考书: 孙家广:计算机图形学(第三版),清华大学出版社,1999 李兰友主编:Turbo C 实用图形程序设计,天津科技翻译出版公司,1994 教研室 主任 审批意见 教 学 后 记 学生虽然刚学过 C 语言程序设计,但对于模块化程序设计思想和子程序形参等理解 仍有一定难度,以后要加强实例程序的详细解释
字符生成字符是指数字,字母、文字(汉字、日文等)等符号,用于图形的标注,说明等。依据其生成机制的不同,可分为点阵字符,失量字符。每个字符都定义成一个称为字符掩膜的短阵,矩阵中的每个元素都是一位二进制数。该位为1时,表示字符的笔划经过此位,对应于此位的象素置为字符颜色:该位为0,表示字符的笔划不经过些位置,对应此位的象素置为背景色;矢量字符是将字符表达为一个点坐标的序列,相邻两点表示一条量,字符的形状便由失量序列刻划,其生成只要将有关的方向和位移值转换为设备驱动指令。字型技术:排版印刷需要高质量的点阵字符,一般到用压缩技术,包括黑自压缩,部件压缩,轮廊字型法,Truetype字体;Truetype使用二次Bezier曲线来描述字符轮廓,对字符轮廓线的控制点进行编号,其顺序是按顺时针方向走一圈,填充的部分始终在其右边。Truetype字库的控制信息包括:■X方向的控制信息:1)字身最后左起始点到字母主干(stem)的短离间隔2)字母主体部分的宽度3)字身的宽度4)字母主干(stem)的宽度5)字母的衬线(Serif)■Y方向的控制信息6)字母横干的厚度7)字母衬线的厚度8)字母主体部分的厚度9)字母横干的高度第二章计算机绘图与程序设计第四节BASIC语言图形程序设计1、IBMPCBASIC的显示方式:文本、中分辨率图形、高分辨率图形,通过SCREEN语句控制SCREENM,BSTAP,VFM为显示模式:BST为选择黑白显示还是彩色显示:AP指出工作页面:VP指出可见页面。SCREEN中的参数可省略,被省略的参数仍采用原来的旧值文本显示方式:40*25和80*25两种,通过WIDTH命令转换中分辨率图形显示方式:320*200,通过C0LORB,P使每个像素有四种颜色高分辨率图形显示方式:640*200,只有黑白两种颜色2、IBMPCBASIC语言中的图形语句:CLS清屏PSET(画点)语句和PRSET(擦点)语句格式:PSET(X,Y)[C)PRSET(X,Y)[,C)LINE画线格式: LINE[(X1,Y1]-(X2,Y2)[,[CI[,B[F]]CIRCLE画圆)格式:CIRCLE(XC,YC),R,C,AS,AE,ASP
字符生成 字符是指数字,字母、文字(汉字、日文等)等符号,用于图形的标注,说明等。依据 其生成机制的不同,可分为点阵字符,矢量字符。每个字符都定义成一个称为字符掩膜的短 阵,矩阵中的每个元素都是一位二进制数。该位为1时,表示字符的笔划经过此位,对应于 此位的象素置为字符颜色;该位为0,表示字符的笔划不经过些位置,对应此位的象素置为 背景色;矢量字符是将字符表达为一个点坐标的序列,相邻两点表示一条矢量,字符的形状 便由矢量序列刻划,其生成只要将有关的方向和位移值转换为设备驱动指令。 字型技术 :排版印刷需要高质量的点阵字符,一般到用压缩技术,包括黑白压缩,部 件压缩,轮廓字型法,Truetype 字体;Truetype 使用二次 Bezier 曲线来描述字符轮廓,对字 符轮廓线的控制点进行编号,其顺序是按顺时针方向走一圈,填充的部分始终在其右边。 Truetype 字库的控制信息包括: ◼ X方向的控制信息: 1)字身最后左起始点到字母主干(stem)的短离间隔 2)字母主体部分的宽度 3)字身的宽度 4)字母主干(stem)的宽度 5)字母的衬线(Serif) ◼ Y方向的控制信息 6)字母横干的厚度 7)字母衬线的厚度 8)字母主体部分的厚度 9)字母横干的高度 第二章 计算机绘图与程序设计 第四节 BASIC 语言图形程序设计 1、IBM PC BASIC 的显示方式: 文本、中分辨率图形、高分辨率图形,通过 SCREEN 语句控制 SCREEN M,BST,AP,VP M 为显示模式;BST 为选择黑白显示还是彩色显示;AP 指出工作页面;VP 指出可见页面。 SCREEN 中的参数可省略,被省略的参数仍采用原来的旧值 文本显示方式:40*25 和 80*25 两种,通过 WIDTH 命令转换 中分辨率图形显示方式:320*200,通过 COLOR B,P 使每个像素有四种颜色 高分辨率图形显示方式:640*200,只有黑白两种颜色 2、IBM PC BASIC 语言中的图形语句: CLS 清屏 PSET(画点)语句和 PRSET(擦点)语句 格式:PSET(X,Y)[,C] PRSET(X,Y)[,C] LINE 画线 格式:LINE[(X1,Y1)]-(X2,Y2)[,[C][,B[F]]] CIRCLE(画圆) 格式:CIRCLE(XC,YC),R,C,AS,AE,ASP
DRAW连续划线格式:DRAW字符串PUT读取语句与GET存写语句PUT(X,Y),AR[,AC)GET(X1,Y1)-(X2,Y2),ARPAINT填充语句格式为:PAINT(X,Y)[CPI[,CB]由于学生以前没有学过Basic语言,在简单提示和介绍的基础上,该节内容要求学生自学掌握。第五节C语言图形程序设计C语言介于高级语言和低级语言之间的一种通用程序设计语言。最早由美国贝尔实验室开发的,turboc是一种先进的c语言编译程序。一、图形系统函数和初始化TurboC为用户提供了一个功能很强的画图软件库,它又称为BorLand图形接口(BGI),它包括图形库文件(graphics.lib),图形头文件(graphics.h)和许多图形显示器(图形终端)的驱动程序(如CGA.BGI、EGAVGA.BGI等)。还有一些字符集的字体驱坳程序(如gothchr黑体字符集等)。编写图形程序时用到的一些图形库函数均在graphics.lib中,执行这些函数时,所需的有关信息(如宏定义等)则包含在graphics.h头文件中。因此用户在自已的画图源程序中必须包括graphics.h头文件,在进行目标程序连接时,要将graphics.lib连接到自己的目标程序中去。1、图形系统的初始化在编制图形程序时,进入图形方式前,首先要在程序中对使用的图形系统初始化,即要用什么类型的图形显示适配器的驱动程序,采用什么模式的图形方式(也就是相应程序的入口地址),以及该适配器驱动程序的寻找路径名。所用系统的显示适配器一定要支持所选用的显示模式,否则将出错。Turbo.C提供了一个图形系统初始化函数initgraph可完成这些功能。2、图形系统的初始化函数voidfarinitgraph(intfar*driver,intfar*mode,charforpath-for-driver),当我们使用的存储模式为tiny(微型)、small(小型)或medium(中型)时,不需要远指针,因而可以将初始化函数调用格式写成如下形式(该说明适用于后面所述的任一函数):intitgrapg(&graphdriver,&graphmode,"");其中驱动程序目录路径为空字符"时,表示就在当前目录下,参数graphmode用所示的模式号或标示符来定义,参数graphdriver是一个枚举变量(DETECT,CGA,VGA..),一般:graphdriver=DETECT旦执行了初始化,显示器即被设置成相应模式的图形方式。下面是某画图程序的开始部分,它包括对图形系统的初始化:#include"graphics.h"main()1int graphdriver-DETECT,int graphmode;intgraph(& graphdriver,& graphmode,"),上面初始化过程中,将由DETECT检测所用适配器类型,并将当前目录下相应的驱动程序装入,并采用最高分辩率显示模式作为graphmode的值。如检测到为CGA适配器时,则graphmode等于4或为CGAHI,若检测到VGA适配器,则graphmode等于2或为VGAHI。3、图形程序运行的条件由于图形程序运行并显示图象直接与显示器有关,而如何控制驱动显示器进行显示,TubroC并没有向用户提供这种技术,而这也是不必要的,因它与显示器硬件结构息息相关,编程者并不需要知道这些东西,否则太复杂了!但用户的图形程序要能运行并显示,则必须要包含有驱动显示器的这种程序。不同种类的显示器因硬件结构不同,因而驱动程序也不同
DRAW 连续划线 格式:DRAW 字符串 PUT 读取语句与 GET 存写语句 PUT(X,Y),AR[,AC] GET(X1,Y1)-(X2,Y2),AR PAINT 填充语句 格式为:PAINT(X,Y) [CP][,CB] . 由于学生以前没有学过 Basic 语言,在简单提示和介绍的基础上,该节内容要求学生自 学掌握。 第五节 C 语言图形程序设计 C 语言介于高级语言和低级语言之间的一种通用程序设计语言。最早由美国贝尔实验室 开发的,turbo c 是一种先进的 c 语言编译程序。 一、图形系统函数和初始化 Turbo C 为用户提供了一个功能很强的画图软件库,它又称为 BorLand 图形接口(BGI), 它包括图形库文件(graphics.lib),图形头文件(graphics.h)和许多图形显示器(图形终端) 的驱动程序(如 CGA.BGI、EGAVGA.BGI 等)。还有一些字符集的字体驱坳程序(如 goth.chr 黑体字符集等)。编写图形程序时用到的一些图形库函数均在 graphics.lib 中,执行这些函数 时,所需的有关信息(如宏定义等)则包含在 graphics.h 头文件中。因此用户在自已的画图 源程序中必须包括 graphics.h 头文件,在进行目标程序连接时,要将 graphics.lib 连接到自己 的目标程序中去。 1、图形系统的初始化 在编制图形程序时,进入图形方式前,首先要在程序中对使用的图形系统初始化,即要 用什么类型的图形显示适配器的驱动程序,采用什么模式的图形方式(也就是相应程序的入 口地址),以及该适配器驱动程序的寻找路径名。所用系统的显示适配器一定要支持所选用 的显示模式,否则将出错。Turbo.C 提供了一个图形系统初始化函数 initgraph 可完成这些功 能。 2、图形系统的初始化函数 void far initgraph(int far *driver, int far *mode, char for path-for-driver);当我们使用的存 储模式为 tiny(微型)、 small(小型)或 medium(中型)时,不需要远指针,因而可以将 初始化函数调用格式写成如下形式(该说明适用于后面所述的任一函数): intitgrapg(&graphdriver, &graphmode,”); 其中驱动程序目录路径为空字符“”时,表示就在 当前目录下,参数 graphmode 用所示的模式号或标示符来定义,参数 graphdriver 是一个枚举 变量{DETECT,CGA,VGA,.},一般: graphdriver=DETECT 一旦执行了初始化,显示器即被设置成相应模式的图形方式。下面是某画图程序的开 始部分,它包括对图形系统的初始化: #include”graphics.h” main() { int graphdriver=DETECT; int graphmode; intgraph(& graphdriver, & graphmode,”); 上面初始化过程中,将由 DETECT 检测所用适配器类型,并将当前目录下相应的驱动 程序装入,并采用最高分辩率显示模式作为 graphmode 的值。如检测到为 CGA 适配器时, 则 graphmode 等于 4 或为 CGAHI,若检测到 VGA 适配器,则 graphmode 等于 2 或为 VGAHI。 3、图形程序运行的条件 由于图形程序运行并显示图象直接与显示器有关,而如何控制驱动显示器进行显示, Tubro C 并没有向用户提供这种技术,而这也是不必要的,因它与显示器硬件结构息息相关, 编程者并不需要知道这些东西,否则太复杂了!但用户的图形程序要能运行并显示,则必须 要包含有驱动显示器的这种程序。不同种类的显示器因硬件结构不同,因而驱动程序也不同