2023年计算机图形学实验报告2.pdf
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《2023年计算机图形学实验报告2.pdf》由会员分享,可在线阅读,更多相关《2023年计算机图形学实验报告2.pdf(48页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、计算机图形学实验报告姓名:学号:班 级:专业:计算机科学与技术完 毕 日 期:202 3.1.3目录实验一 OpenGL图形编程.31.实验目的.32.实验内容.33.实验代码与实验结果.4(1)画矩形.4 画点.6(3)画直线.7(4)画等边三角形.8实验二 直线绘制实验.91.实验目的和实验内容.92.实验代码和实验结果.9 掌握数值微分算法编程绘制直线.9(2)掌握中点画线算法编程绘制直线.12 掌握Bresenham算法编程绘制直线.13实验三圆绘制实验.151.实验目的和实验内容.152.实验代码实验结果.15 实现八分法画圆程序.15(2)实 现 Bresenham 算法绘制圆.1
2、8 实现中点Bresenham算法绘制椭圆.21实验四填充算法实验.251.实验目的.252.实验内容.263.实验代码和实验结果.27实验五裁剪算法实验.371.实验目的和实验内容.372.实验代码和实验结果.37实验一 O penG L图形编程1.实验目的点的绘制直线的绘制(3)多边形面的绘制2.实验内容点的绘制glB egi n(GL_ POINTS);g IVer t ex3 f(0.Of,0 .Of,0 .Of);g 1 Ver t ex3 f(1 O.Of,0.0 f,0.O f);glE n d();点的属性(大小)vo i d gl P o i nt Si z e (GL f
3、lo a t si z e);直线的绘制模式G L _ L I NESGL_ L I NE_ STRIPG L _ L I N E _ L O O P直线的属性线宽vo i d g 1 L i neWi d th (G L f lo a t wi dt h )线型glEna b 1 e(GU L INE_ S T I P P L E);g 1 L i n e S ti pple(GLi n t fa cto r,GL u s h o rtp a t t e r n);三角形面的绘制G L _T R I ANGLESGUTRIANGLE_ STRIPGL_ TRIANGLE_ FAN四边形面的绘
4、制G L QUADSG L _Q U A DS_ STRIP多边形面的绘制(GL_ P OLYG 0 N)多边形面的绘制规则所有多边形都必须是平面的。多边形的边沿决不能相交,并且多边形必须是凸的。解决:对于非凸多边形,可以把它分割成几个凸多边形(通常是三角形),再将它绘制出来。3.实验代码与实验结果画矩形#i nc 1 u d e v o i d I ni t i a l(vo i d)glC lea rC o lo r(l.0 f,1.0 f,1 .0 f,1.Of);glMa t r i xMo d e(GL_ PROJEC T I O N);o gl u 0 rth o 2 D(0 .0
5、,2 0 0.0,0.0,1 5 0.0);)vo i d Di spla y(v o i d)glC lea r(G L _ C O L O R_ B UFFER B I T);g 1 C o lo r 3 f(1.Of,0 .Of,0.0 f);。g 1 Re c t f(5 0.Of,1 0 0.Of,1 5 0.Of,5 0.0 f);o g 1 Flush ();i nt ma i n(i n t a rgc,ch a r a rgv )o glutln i t(&a rgc,a rgv);glut I n i tDi s p la y M o de(GLUT_ S INGLE I
6、G L U T_R G B);glut I ni t Wi ndo wSi z e(4 0 0,3 0 0 );o glutlni tW i ndo wPo si ti o n(1 0 0,1 2 0);g l u t C re at e Wi nd o w(矩 形 );0 g 1 ut D i spla y F u n c(D i spla y);o I ni ti a l();o g 1 utM a i nLo o p();r e tu r n 0;画点glPo i n t Si z e(3 );glB eg i n(GL POINTS);glC o 1 o r3 f(l.Of,0 .0
7、f,0 .Of);g l V e r tex 2 i (1 0 ,1 4 0);g 1 Vertex 2 i (1 0 0,7 5);。g 1 Vertex2 i (1 9 0,1 0);glEnd();目 回 冈矩形画直线g IPo i n t S i z e(3 );g 1 B eg i n(G L _ L I NE_ L0 0 P);glC o lo r 3 f(1 .0 f,0.Of,O.Of);g 1 V e rte x 2 i (2 0,1 0);g 1 V er t ex2 i (6 0,5 0);cglVerte x 2 i(2 0,5 0);eg 1 Ver t ex2 i(
8、6 0,1 0);恰 1 Vertex2 i(4 0,7 0);glEnd();矩形目|回冈画等边三角形gl Po i ntSi z e(3);glB eg i n(GL_ TRIANGLE S);glC o 1 o r3 f(1 .Of,0.Of,0.Of);glVert e x 2 i (2 0,1 0);g 1 Verte x 2 i (6 0,1 0);必g 1 V e rte x 2 f(4 0.0,4 4.6 4);实验二直线绘制实验1.实验目的和实验内容(1)掌握数值微分算法编程绘制直线(2)掌握中点画线算法编程绘制直线(3)掌握B r e s enh a m算法编程绘制直线2.
9、实验代码和实验结果掌握数值微分算法编程绘制直线#i n elude#i n cl u d e vo i d Ini t i a l(vo i d)g 1 C lea r C o lo r(1.0 f,1.Of,1.0 f,L O f);o g 1 M a t r i x M o d e(G U P R O J EC TION);g 1 u O r t h o 2 D(0.0 ,2 0 0.0,0.0,1 5 0.0);v o i d D i s p la y(vo i d)g 1 C lea r(GL_ C 0 L O R B U F FER_ B IT);glC o 1 o r 3 f(1
10、.Of,0.Of,0 .Of);。g IPo i n t S i z e(3 );i nt d x,dy,ep s 1,k;flo a t x,y,xln c re,ylncre;dnt x 0 =1 0;o i nt y0=1 0;o i nt xl=2 0;o i n t yl=8 0;o d x=xl-xO;o dy=yl-y 0;o x=x0 ;y=yO;i f(a b s(dx)a b s(d y)s epsl=a b s(dx);o else。eps 1 =a b s(d y);xlncre=(fl o a t)d x/(fl o a t)ep s 1;o ylnc r e=(fl
11、o a t)dy/(flo a t)e psi;0 fo r(k=0 ;k x 1)x=x 1;x l=x O ;x0=x;o y=yl;yl=yO;yO=y;)o x=x 0;y=y0;。d x=xl x 0;dy=y 1 y 0;d=dx 2*dy;U plncre=2*d x-2*d y;o D o wnln ere=2*dy;w h i le(x X +;i f(d 0)。y+;8 d+=UpIncre;)g e Ise。d+=Do w n Inc r e;)。g IFlush O;亘 叵掌握Bresenh a m 算法编程绘制直线vo i d D i spla y(vo i d)gl
12、 C lea r(GL_ C OLOR_ B UF F E R_ B I T);o glC o 1 o r3 f(1.0 f,0.Of,0.0 f);glPo i ntS i z e(3);i n t x,y,dx,dy,e;i nt x0 =l 0 ;i nt y0=1 0;i nt x 1=8 0;o i n t yl=2 0 ;d x=xl-x0;My=y 1-y 0 ;e=-dx;x=x 0;y=y0;a wh i le(x 0)6 /+;必 e=e-2*dx;06。g IFlush ();实验三 圆绘制实验1.实验目的和实验内容(1)实现八分法画圆程序(2)实 现 B re s en
13、h a m算法绘制圆(3)实现中点B r e s e n h a m算法绘制椭圆2.实验代码实验结果实现八分法画圆程序#i n elude#i n c lude vo i d Ini t i a 1 (v o i d)glC le a rC o 1 o r(1 .Of,1 .Of,1.Of,1 .0 f);o g 1 Ma tri xM o d e(GL_ PR0 J EC TION);o gluO r t h o 2 D(0.0,2 0 0.0,0.0,1 5 0.0);v o i d pu t pi xel(i nt x,i n t y)8 x+=2 0;y+=2 0;。glB e g i
14、 n(GL_ POINTS);g 1 Verte x 2 i (x,y);。glEnd();vo i d C i rcl e Po i n t(i nt x,i n t y)gpu t p i x el(x,y);gputpi x e 1 (y,x);p u tpi x e 1 (y,x);put p i x e l (-x,y);叩ut p i x e 1 (x,-y);p u tpi xel(-y,-x);gpu t pi xel(y,-x);s put p i x e 1(x,-y);)vo i d Di s p la y(v o i d)o glC 1 ea r(G L_ C 0 L0
15、 R_ B UFFER_ B I T);o g IC o lo r3 f(1.Of,0.Of,0.O f);g IPo i nt S i z e ;o C i rcleP o i n t(5,2);g IFlush ();i n t ma i n(i nt a rgc,c h a r*a rgv )g 1 ut I n i t(&a rg c,a r g v);glutlni t D i s pl a yMo de(GLUTSINGLE|GLUT_ RGB);g 1 ut I ni tWi ndo wSi z e(4 0 0,3 0 0);glu t In i tW i n d o wPo s
16、i t i o n(1 0 0,1 2 0);glut C rea teWi n d o w(矩形”);o g 1 u t D i spla y F unc(D i s pl a y);I n i t i a 1 ();o glutM a i nLo o p();r e turn 0 ;毛走形ICZJ II B l|w 3 w|实现 B re s e n h am 算法绘制圆#i n c 1 ude#i nclude vo i d Ini t i a 1 (v o i d)g IC lea rC o lo r(1.Of,1.Of,1 .0 f,1.Of);g l M a t r i x M o
17、 d e(G L _ P R O J E C T I O N);gl uOr t h o 2 D(0.0,2 0 0.0,0.0,1 5 0.0 );)v o i d putpi xel(i nt x,i nt y)8 x+=7 5;y+=7 5;o glB egi n(GL_ POINTS);gglV e rt e x2 i (x,y);。g 1 E n d();vo i d C i r c 1 ePo i n t(i n t x,i n t y)gput p i x e 1 (x,y);。put p i xel(y,x);putp i xel(-y,x);pu t p i xel(x,y)
18、;叩utpi xe 1 (x,y);。putp i xel(-y,x);。pu t p i xe 1 (y,-x);wputpi xel(x,-y);v o i d M i dB ressenh a mC i rc 1 e(i nt r)i n t x,y,d;x=0;y=r;d=1 -r;wh i 1 e(x=y)C i rclePo i n t(x,y);o o i f(d 0)d+=x*x+3;。e Is e o d+=2*(x-y)+5 ;oooy x+;)vo i d Di s p la y(vo i d)吆1 C le a r(G L _ C OLOR_ B UFFE R _ B
19、I T);gl C o lo r 3 f(1 .Of,0.Of,0.0 f);o glPo i ntSi z e(3);M i d B re s s e nh a mC i r c 1 e(5 0 );o gl F lu s h ();i nt ma i n(i n t a rgc,ch a r*a rgv)o glutlni t(&a rgc,a r g v);o glutlni tDi spla yMo d e(GLUT_ SINGLE|GLUTg lut I ni tWi ndo wS i z e(4 0 0 ,3 0 0 );RGB);o glut I ni t W i nd o wP
20、 o s i t i o n(1 0 0,1 2 0);o g lutC rea t e Wi ndo w(矩形);o gl u tDi s pl a yFu n c(D i sp 1 a y);Ini ti a l();。g lutMa i nL o o p();return 0;实现中点B r es e n ham算法绘制椭圆#i nclu d e#i n elude vo i d I ni ti a 1 (vo i d)g IC lea rC o lo rd.Of,1.0 f,1 .0 f,1.Of);o glMa tri x M o d e(G L _ P R 0JEC TION);g
21、lu0 rth o 2 D(0.0,2 0 0.0,0.0 ,1 5 0.0);v oid pu t pi xel(i nt x,i nt y)4+=1 0 0 ;y+=7 5 ;o glB e g i n(G L P O I NT S);8 gl V e r t ex2 i (x,y);g g l E n d();vo i d Mi dB ressenh a mEli p se(i nt a,i nt b)i n t x,y;a flo a t d 1 ,d 2 ;x=0;y=b;d 1 =b*b+a*a*(-b+0.2 5);6 putpi xel(x,y);pu t pi xe 1 (-
22、x,-y);p utpi xel(-x,y);putpi x e 1(x,-y);w h i le(b*b*(x+1 )V a*a*(y 0.5)gi f(d 1 0)。i f(d2 e 1 sed 2 +=a*a*(-2 *y+3);0y;o p u tpi x e 1 (x,y);叩utpi x e 1 (-x,-y);。p u tpi x e 1 (-x,y);p u t pi xel(x,y);vo i d D i spla y(v o i d)glC lea r(GL_ C OLO R _ B U F F E R B I T);glC o lo r3 f(1.Of,0.Of,0.O
23、f);0 glp o i n t S i z e(3);M i d B re s s e n h a mEl i p se(8 0,6 0);o glFl u s h ();i nt ma i n(i n t a r g c,ch a r*a r gv )o g 1 u t I n i t(&a r gc,a r g v);g 1 u t I n i t D i sp 1 a yMo de(GLUT_ S I N G LE|GLUT_ RG B);gl u tlni tWi n do wS i z e(4 0 0,3 0 0);o glutln i tWi n d o w P o s i ti
24、 o n(1 0 0,1 2 0);glu t C r ea t eWi ndo w(矩 形 );o g l u tDi spla y Func(Di s p 1 a y);In i t i a 1 ();。glutMa i nLo o p();ret u rn 0;实验四填充算法实验1.实验目的掌握用扫描线种子填充法实现扫描线种子填充算法填充任一多边形区域的程序2.实验内容(1)堆栈库tti nclude 实现了堆栈操作struc t Po i n tGLi n t x;GLi n t y;);std::s t a ck s tk;struct Po i nt p o i n t 1 ;st
25、k.po p(po i ntl);/po p从栈中弹出最上面的元素并取得它stk.pu s h (p o i ntl);/压入一个元素stk.em p t y();判空po i n t 1 =stk.to p();取得栈最上面元素,但不弹出,仍在栈中(2)获取像素颜色typ e def flo a t C o lo r 3;Col or c;glR e a dPi xe 1 s(cur_ p o i nt.x,c ur_po i n t.y,1,1,GL_ RGB,GL_ FL0 AT,c);/3.实验代码和实验结果#i n elude#i n c lude#i ncl u de#i ncl
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2023 计算机 图形学 实验 报告
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内