- 1、本文档共10页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
一题目环图设计.doc
一:题目:环图设计
要求:在屏幕上画出彩色的五环图,每个环(圆)上一种颜色,每个圆的圆心坐标和半径在程序中指定。
二:分析(用到的知识点)
用dos 9号功能显示字符串
用BIOS的INT 10中AH=0号功能,设置显示方式。AL=13(320*200 , 256色图形显示方式VGA)
用BIOS的INT 10中AH=6号功能,设置清屏。AL=0全屏幕为空白,BH=7,CX=0,DX=184FH清屏
用BIOS 的INT 10中AH=2号功能,设置光标位置,BH=0为页号。
用BIOS的INT 10中AH=0C号功能,写像素,AL=颜色值,BH=页号,DX/CX=像素行/列。
用到计算机图形学中Bresenham算法关于画圆的知识。
三:设计思想
Bresenham算法的解释
(x,y)为数学中点的坐标。在x=y到y=0的圆弧中,(R,0)点比在圆弧上,算法从该点开始。 由(R,0)点开始,y渐增,x渐减,每次y方向加1,x方向减1或减0。 设P点坐标(xi,yi),下一个候选点为右点Pr(xi,yi+1)和左点Pl(xi-1,yi+1), 取Pl和Pr的中点M(xi-0.5,yi+1),设理想圆与 y=yi+1的交点Q,
构造判别式: d=f(xM,yM)=(x-0.5)2+(yi+1)2-R2
当d0时,M在Q点左方(Q在M右),取右点Pr(xi,yi+1)
当d0时,M在Q点右方(Q在M左),取左点Pl(xi-1,yi+1)
当d=0时,M与Q点重合,约定取左点Pl(xi-1,yi+1)
推导判别式:
d=0时,取左点Pl(xi-1,yi+1),下一点为(xi-1,yi+2)和(xi-2,yi+2)
d2=f(xi-1.5,yi+2)=(xi-1.5)2+(yi+2)2-R2=d1-2xi+2yi+5
d0时,取右点Pr(xi,yi+1),下一点为(xi,yi+2)和(xi-1,yi+2)
d2=f(xi-0.5,yi+2)=(xi-0.5)2+(yi+1)2-R2=d1+2yi+3
d0=f(R,0)=R2-R+0.25+1-R2=1.25-R
整个设计过程的说明:
在五环程序设计中,使用主程序,子程序设计模式。主程序main,子程序程序有Set-mode, Set-cursor, Set-color ,Circle, Pan-direction ,Huayuan ,Dian, Delay 。
①在Circle子程序中,分别设置五个圆的坐标,其中x代表行,y代表列。Yuan1的坐标为(x1,y1),Yuan2的坐标为(x1,y1+2.5R),Yuan3的坐标为(x1,y1+5R),Yuan4的坐标为(x1+R,y1+1.25R),Yuan5的坐标为(x1+R,y1+3.75R)
②在Pan-direction子程序中,用Bresenham算法,来判断如何取点。其中d为修正值。D初始化为1-R,x初始化为0,y初始化为25R。每次y逐次减1,x逐次加1.当x增加到y时跳出。若D0,D=D+2(x-y)+5;若D0,D=D+2x+3。
③在Huayuan子程序中,描绘8个点,每画一个点时,根据对称,其他7个点也画出。
④在Dian子程序中,为了显示清晰,调用6次Set_color加深线条。其中dx代表行,cx代表列
Delay是一个画圆的延时程序,
3. 主要流程图
主程序流程图 Circle子程序
开始开始
开始
开始
调用Clear实现清屏Yuan1坐标行/列为X1,Y1
调用Clear实现清屏
Yuan1坐标行/列为X1,Y1
调用
调用Set_mode设置图形显示方式
调用
调用Pan_direction
显示
显示STRING1
Yuan2
Yuan2坐标x1?x1,
Y1?y1+2.5R
调用
调用Set_cursor置光标
调用
调用Pan_direction
显示
显示STRING2
Yuan3
Yuan3坐标X1?X1
Y1?Y1+5R
从键盘输入一个字符
从键盘输入一个字符
调用Pan_direction
调用Pan_direction
是否为
是否为q 否
Yuan4坐标X1
Yuan4坐标X1?X1+R
Y1?Y1+1.25R
否
调用Circle子程序
调用Circle子程序
调用
调用Pan_direction
结束
文档评论(0)