欢迎来到天天文库
浏览记录
ID:28074739
大小:139.50 KB
页数:5页
时间:2018-12-07
《图形学王雪梅-实验二》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、实验二基本图形的生成班级:计科高职12-1班姓名:王??梅学号:201203014015上机时间:2014/10/18Ji机地点:A-407指导老师:尉秀梅一实验目的:理解基本图形元素光栅化的基本原理,掌握一种基本图形元素光栅化算法二实验内容1.直线生成算法的实现尝试调用实验一写好的算法,画直线A(0,0)B(100,200),C(300,400)D(20,80),E(10,400)F(500,20),G(400,100)H(20,500)2.使用Bresenham算法,生成一个完整的圆形,假设圆心在P(10
2、(),100),半径是60。3.实验内容(1)实验二直线生成算法的实现,试一下将直线的两个端点坐标交换一不,还能正确画线吗?修改一不程序,使其能画各种惜况的直线段(2)bresenham画圆算法(能够画圆心不在原点的圆形)三实验步骤1.三实验步骤1、两端点坐标交挽后,不能正确画线,2、直线生成算法的实验①首先创建一个Win32控制台项目②在源文件屮,包含头文件#include3、glutDisplayFunc(myDisplay)绘制直线⑥编译、调试、运行程序,程序结果如图2.1所示3、使用Bresenham算法,生成一个完整的圆形①在源文件屮,编写draw_pixel()载入圆心参数②编写bresenham_arc()ifflj圆函数,实现bresenham尚圆算法,实现八个区域的圆弧③在myDisplayO函数屮,淸空颜色为黑色,设罝背景颜色,调用glPointSize()设罝原点大小,调用画圆函数bresenham_arc(),圆心100.100,半径60。glFlush()结4、束④在主函数中,设罝显示方式、窗口在屏幕中的位置、窗口大小,然后创建窗口,gIutDisplayFunc(&myDisplay)绘制图形⑤编译、调试、运行程序,程序结果如图2.2所示2.圆心在整个圆的正屮心位置,通过圆心有卩4条对成轴,如果知道丫圆上的一点(x,y),就可知道其他的七个对称点,此为八对称性。由Bresenham画圆算法,可得到右上角的八分之一圆弧,再由对称性,可得到其他对称点。如果开始不再原点,则算法如下:Voidbresenham_arc(intxl,intyl,intrefloatr,fl5、oatg,floatb)intx,y,d;x=0;y=rl;d=3-2*rl;while(x6、l,intrl,floatr,floatg,floatb){intx,y,d;x=0;y=rl:d=3-2*rl:while(x〈y){draw_pixel(x+xl,y+yl,r,g,b):if(d<0)d+=4*x+6;else{d+=4*(x-y)+10:3T-=1;}X++;}if(x=y){draw_pixel(x+xl,y+yl,r,g,b):}}在voidmyDisply(void)中调用voidbresenham_arc(intxl,intyl,intrefloatr,floatg,float7、b)即可调用函数从而得到画出的圆。圆的图如下:四心得体会通过对程序的分析与学习,使我学到了如何熟悉直线的生成算法,掌握直线的绘制。通过应用基本函数,编写程序,然后才能使用一些基本的图形函数,进行调用,编写程序,经过许多个步骤,编写之后应用TC软件进行调试、修改、最终才能得到想要的结果。Bresenham画圆算法,圆心在盤个圆的正屮心位賈,通过圆心有四条对成轴,如果知道了圆上的一点(x,y),就可如道其他的七个对称点,由Bresenham㈣圆算法,可得到右上角的八分之一圆弧,再由对称性,可得到其他对称点。
3、glutDisplayFunc(myDisplay)绘制直线⑥编译、调试、运行程序,程序结果如图2.1所示3、使用Bresenham算法,生成一个完整的圆形①在源文件屮,编写draw_pixel()载入圆心参数②编写bresenham_arc()ifflj圆函数,实现bresenham尚圆算法,实现八个区域的圆弧③在myDisplayO函数屮,淸空颜色为黑色,设罝背景颜色,调用glPointSize()设罝原点大小,调用画圆函数bresenham_arc(),圆心100.100,半径60。glFlush()结
4、束④在主函数中,设罝显示方式、窗口在屏幕中的位置、窗口大小,然后创建窗口,gIutDisplayFunc(&myDisplay)绘制图形⑤编译、调试、运行程序,程序结果如图2.2所示2.圆心在整个圆的正屮心位置,通过圆心有卩4条对成轴,如果知道丫圆上的一点(x,y),就可知道其他的七个对称点,此为八对称性。由Bresenham画圆算法,可得到右上角的八分之一圆弧,再由对称性,可得到其他对称点。如果开始不再原点,则算法如下:Voidbresenham_arc(intxl,intyl,intrefloatr,fl
5、oatg,floatb)intx,y,d;x=0;y=rl;d=3-2*rl;while(x6、l,intrl,floatr,floatg,floatb){intx,y,d;x=0;y=rl:d=3-2*rl:while(x〈y){draw_pixel(x+xl,y+yl,r,g,b):if(d<0)d+=4*x+6;else{d+=4*(x-y)+10:3T-=1;}X++;}if(x=y){draw_pixel(x+xl,y+yl,r,g,b):}}在voidmyDisply(void)中调用voidbresenham_arc(intxl,intyl,intrefloatr,floatg,float7、b)即可调用函数从而得到画出的圆。圆的图如下:四心得体会通过对程序的分析与学习,使我学到了如何熟悉直线的生成算法,掌握直线的绘制。通过应用基本函数,编写程序,然后才能使用一些基本的图形函数,进行调用,编写程序,经过许多个步骤,编写之后应用TC软件进行调试、修改、最终才能得到想要的结果。Bresenham画圆算法,圆心在盤个圆的正屮心位賈,通过圆心有四条对成轴,如果知道了圆上的一点(x,y),就可如道其他的七个对称点,由Bresenham㈣圆算法,可得到右上角的八分之一圆弧,再由对称性,可得到其他对称点。
6、l,intrl,floatr,floatg,floatb){intx,y,d;x=0;y=rl:d=3-2*rl:while(x〈y){draw_pixel(x+xl,y+yl,r,g,b):if(d<0)d+=4*x+6;else{d+=4*(x-y)+10:3T-=1;}X++;}if(x=y){draw_pixel(x+xl,y+yl,r,g,b):}}在voidmyDisply(void)中调用voidbresenham_arc(intxl,intyl,intrefloatr,floatg,float
7、b)即可调用函数从而得到画出的圆。圆的图如下:四心得体会通过对程序的分析与学习,使我学到了如何熟悉直线的生成算法,掌握直线的绘制。通过应用基本函数,编写程序,然后才能使用一些基本的图形函数,进行调用,编写程序,经过许多个步骤,编写之后应用TC软件进行调试、修改、最终才能得到想要的结果。Bresenham画圆算法,圆心在盤个圆的正屮心位賈,通过圆心有四条对成轴,如果知道了圆上的一点(x,y),就可如道其他的七个对称点,由Bresenham㈣圆算法,可得到右上角的八分之一圆弧,再由对称性,可得到其他对称点。
此文档下载收益归作者所有