版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精选优质文档-倾情为你奉上计算机图形学实验报告姓名:_ _学号:_ _班级:_ _ 时间:_2016年12月_实验一 OpenGL编程与图形绘制1 实验目的了解OpenGL编程,并熟悉OpenGL的主要功能、绘制流程和基本语法。学会配置OpenGL环境,并在该环境中编程绘图。2 实验内容OpenGL的主要功能:模型绘制、模型观察、颜色模式、光照应用、图像效果增强、位图和图像处理、纹理映射、实时动画和交互技术。OpenGL的绘制流程分为两个方面:一个完整的窗口系统的OpenGL图形处理系统的结构为:最底层为图形硬件,第二层为操作系统,第三层为窗口系统,第四层为OpenGL,最上面的层为应用软件;
2、OpenGL命令将被放在一个命令缓冲区中,这样命令缓冲区中包含了大量的命令、顶点数据和纹理数据。当缓冲区被清空时,缓冲区中的命令和数据都将传递给流水线的下一个阶段。OpenGL的基本语法中相关库有:OpenGL核心库:gl、OpenGL实用程序库: glu、OpenG编程辅助库:aux、OpenGL实用程序工具包(OpenGL utility toolkit,GLUT):glut、Windows专用库:wgl。OpenGL的基本语法中命名规则为:OpenGL函数都遵循一个命名约定,即采用以下格式:<库前缀><根命令><可选的参数个数><可选的参数类型&
3、gt;。了解了上述基础知识后,配置好OpenGL环境,然后在该环境中编程练习图形的绘制,本次实验主要是对点的绘制、直线的绘制和多边形面的绘制。3 实验代码及结果3.1点的绘制:#include<gl/glut.h>void Initial(void) glClearColor(1.0f,1.0f,1.0f,1.0f); /设置窗口背景颜色为白色 glMatrixMode(GL_PROJECTION); /指定设置投影参数 gluOrtho2D(0.0,200.0,0.0,150.0); /设置投影参数void Display(void) glClear(GL_COLOR_BUFFE
4、R_BIT); /用当前背景颜色填充窗口 glColor3f(1.0f,0.0f,0.0f); /设置当前的绘图颜色为红 / glRectf(50.0f,100.0f,150.0f,50.0f); /绘制一个矩形 glPointSize(10); /三个点 glBegin(GL_POINTS); glColor3f(1.0f,0.0f,0.0f); glVertex2i(2,148); glVertex2i(100,75); glVertex2i(198,2); glEnd(); glFlush(); /清空OpenGL命令缓冲区,执行OpenGL程序int main(int argc,cha
5、r*argv) glutInit(&argc,argv); glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB); /初始化窗口的显示模式 glutInitWindowSize(400,300); /设置窗口的尺寸 glutInitWindowPosition(100,120); /设置窗口位置 glutCreateWindow("矩形"); /创建一个名为矩形的窗口 glutDisplayFunc(Display); /设置当前窗口的显示回调函数 Initial(); /完成窗口初始化 glutMainLoop(); /完成窗口GLU
6、T事件处理循环 return 0;运行结果:3.2直线的绘制:#include<gl/glut.h>void Initial(void) glClearColor(1.0f,1.0f,1.0f,1.0f); /设置窗口背景颜色为白色 glMatrixMode(GL_PROJECTION); /指定设置投影参数 gluOrtho2D(0.0,200.0,0.0,150.0); /设置投影参数void Display(void) glClear(GL_COLOR_BUFFER_BIT); /用当前背景颜色填充窗口 glColor3f(1.0f,0.0f,0.0f); /设置当前的绘图颜
7、色为红色 / glRectf(50.0f,100.0f,150.0f,50.0f); /绘制一个矩形glBegin(GL_LINE_LOOP); /五角星 glVertex2i(10,10); glVertex2i(30,35); glVertex2i(50,10); glVertex2i(5,25); glVertex2i(55,25); glEnd(); glFlush(); /清空OpenGL命令缓冲区,执行OpenGL程序int main(int argc,char*argv) glutInit(&argc,argv); glutInitDisplayMode(GLUT_SIN
8、GLE|GLUT_RGB); /初始化窗口的显示模式 glutInitWindowSize(400,300); /设置窗口的尺寸 glutInitWindowPosition(100,120); /设置窗口位置 glutCreateWindow("矩形"); /创建一个名为矩形的窗口 glutDisplayFunc(Display); /设置当前窗口的显示回调函数 Initial(); /完成窗口初始化 glutMainLoop(); /完成窗口GLUT事件处理循环 return 0;运行结果:3.3多边形面的绘制:#include<gl/glut.h>void
9、 Initial(void) glClearColor(1.0f,1.0f,1.0f,1.0f); /设置窗口背景颜色为白色 glMatrixMode(GL_PROJECTION); /指定设置投影参数 gluOrtho2D(0.0,200.0,0.0,150.0); /设置投影参数void Display(void) glClear(GL_COLOR_BUFFER_BIT); /用当前背景颜色填充窗口 glColor3f(1.0f,0.0f,0.0f); /设置当前的绘图颜色为红色 / glRectf(50.0f,100.0f,150.0f,50.0f); /绘制一个矩形 glBegin(G
10、L_TRIANGLES); /等边三角形 glVertex2f(0.0,0.0); glVertex2f(15,25.95); glVertex2f(30,0); glEnd(); glFlush(); /清空OpenGL命令缓冲区,执行OpenGL程序int main(int argc,char*argv) glutInit(&argc,argv); glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB); /初始化窗口的显示模式 glutInitWindowSize(400,300); /设置窗口的尺寸 glutInitWindowPosition(10
11、0,120); /设置窗口位置 glutCreateWindow("矩形"); /创建一个名为矩形的窗口 glutDisplayFunc(Display); /设置当前窗口的显示回调函数 Initial(); /完成窗口初始化 glutMainLoop(); /完成窗口GLUT事件处理循环 return 0;运行结果:实验二 直线绘制实验1. 实验目的为了进一步熟悉OpenGL编程,了解基本图形生成算法中的直线绘制,学会直线绘制算法中最常用的三种算法:数值微分法、中点画线算法和Bresenham算法。2. 实验内容(一)数值微分法数值微分法直接从直线的微分方程生成直线。给定
12、直线的两端点:P0(X0,Y0)和P1(X1,Y1),得到直线的微分方程dy/dx=y/x=(Y1-Y0)/(X1-X0)=k。数值微分算法的原理是,由于直线的一阶导数是连续的,而且x和y是成比例的,因此通过在当前位置(Xi,Yi)分别加上两个小增量x和y(为无穷小的正数)来求下一点(X(i+1),Y(i+1))的x,y坐标。(二)中点画线算法给定直线的两端点:P0(X0,Y0)和P1(X1,Y1),可得到直线方程F(x,y)=y-kx-b=0且k=y/x=(Y1-Y0)/(X1-X0)。绘图过程如下:.输入直线的两端点P0(X0,Y0)和P1(X1,Y1)。.计算初始值x, y,d=x-2y
13、,x=X0,y=Y0.绘制点(x,y)。判断d的符号,若d<0,则(x,y)更新为(x+1,y+1),d更新为d+2x-2y;否则(x,y)更新为(x+1,y),d更新为y。.当直线没有画完时,重复步骤,否则结束。(三)Bresenham算法算法步骤如下:.输入直线两端点P0(X0,Y0)和P1(X1,Y1)。.计算初始值x, y,e=-x,x=X0,y=Y0。.绘制点(x,y)。.e更新为e+2y。判断e的符号,若e>0,则(x,y)更新为(x+1,y+1),同样将e更新为e-2x;否则(x,y)更新为(x+1,y)。.当直线没有画完时,重复步骤和;否则结束。3. 实验代码及结果
14、3.1数值微分算法编程绘制直线代码: #include<gl/glut.h>#include<windows.h>void Initial(void) glClearColor(1.0f,1.0f,1.0f,1.0f); /设置窗口背景颜色为白色 glMatrixMode(GL_PROJECTION); /指定设置投影参数 gluOrtho2D(0.0,200.0,0.0,150.0); /设置投影参数void Display(void) glClear(GL_COLOR_BUFFER_BIT); /用当前背景颜色填充窗口 glColor3f(1.0f,0.0f,0.0
15、f); /设置当前的绘图颜色为红色glBegin(GL_LINES); int x0=10;int y0=20;int x1=30;int y1=40;int color=10; int dx,dy,epsl,k; float x,y,xIncre,yIncre; dx=x1-x0; dy=y1-y0; x=x0; y=y0; / if(abs(dx)>abs(dy) epsl=abs(dx); else epsl=abs(dy); xIncre=(float)dx/(float)epsl; yIncre=(float)dy/(float)epsl; for(k=0;k<=epsl
16、;k+) glVertex2i(int(x+0.5),(int)(y+0.5);x+=xIncre;y+=yIncre; glEnd(); glFlush(); /清空OpenGL命令缓冲区,执行OpenGL程序int main(int argc,char*argv) glutInit(&argc,argv); glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB); /初始化窗口的显示模式 glutInitWindowSize(400,300); /设置窗口的尺寸 glutInitWindowPosition(100,120); /设置窗口位置 glutC
17、reateWindow("矩形"); /创建一个名为矩形的窗口 glutDisplayFunc(Display); /设置当前窗口的显示回调函数 Initial(); /完成窗口初始化 glutMainLoop(); /完成窗口GLUT事件处理循环 return 0;实验结果:2.2中点画线算法编程绘制直线代码:#include<gl/glut.h>#include<windows.h>void Initial(void) glClearColor(1.0f,1.0f,1.0f,1.0f); /设置窗口背景颜色为白色 glMatrixMode(GL_
18、PROJECTION); /指定设置投影参数 gluOrtho2D(0.0,200.0,0.0,150.0); /设置投影参数void Display(void) glClear(GL_COLOR_BUFFER_BIT); /用当前背景颜色填充窗口 glColor3f(1.0f,0.0f,0.0f); /设置当前的绘图颜色为红色glBegin(GL_POINTS); int x0=50;int y0=20;int x1=100;int y1=120;int color=10; int dx,dy,d,UpIncre,DownIncre,x,y; if(x0>x1) x=x1;x1=x0;
19、x0=x;y=y1;y1=y0;y0=y; x=x0;y=y0; dx=x1-x0;dy=y1-y0; d=dx-2*dy; UpIncre=2*dx-2*dy; DownIncre=2*dy; while(x<=x1) glVertex2i(x,y); x+; if(d<0) y+; d+=UpIncre; else d+=DownIncre; glEnd(); glFlush(); /清空OpenGL命令缓冲区,执行OpenGL程序int main(int argc,char*argv) glutInit(&argc,argv); glutInitDisplayMode
20、(GLUT_SINGLE|GLUT_RGB); /初始化窗口的显示模式 glutInitWindowSize(400,300); /设置窗口的尺寸 glutInitWindowPosition(100,120); /设置窗口位置 glutCreateWindow("矩形"); /创建一个名为矩形的窗口 glutDisplayFunc(Display); /设置当前窗口的显示回调函数 Initial(); /完成窗口初始化 glutMainLoop(); /完成窗口GLUT事件处理循环 return 0;实验结果:2.3Bresenham算法编程绘制直线代码:#include
21、 <gl/glut.h>#include <windows.h>void Initial(void)glClearColor(1.0f,1.0f,1.0f,1.0f); /设置窗口背景颜色为白色glMatrixMode(GL_PROJECTION);/指定设置投影参数gluOrtho2D(0.0,200.0,0.0,150.0);/设置投影参数void Display(void)glClear(GL_COLOR_BUFFER_BIT);/用当前背景色填充窗口glColor3f(1.0f,0.0f,0.0f);/设置当前的绘图颜色为红色/Bresenham算法glBegi
22、n(GL_POINTS);int x0 = 10;int y0 = 20;int x1 = 90;int y1 = 90;int color=10;int x,y,dx,dy,e;dx = x1-x0;dy = y1-y0;e=-dx;x=x0;y=y0;while(x<=x1)glVertex2i(x,y);x+;e=e+2*dy;if(e>0)y+;e=e-2*dx;glEnd();glFlush();/清空OpenGL命令缓冲区,执行OpenGL程序int main(int argc,char*argv)glutInit(&argc,argv);glutInitDis
23、playMode(GLUT_SINGLE|GLUT_RGB);/初始化窗口的现实模式glutInitWindowSize(400,300);/设置窗口的尺寸glutInitWindowPosition(100,200);/设置窗口的位置glutCreateWindow("点");/创建一个名为矩形的窗口glutDisplayFunc(Display);/设置当前窗口的显示函数Initial();/完成窗口的初始化glutMainLoop();/启动主GLUT事件处理循环return 0;实验结果:实验三 圆绘制实验1. 实验目的2. 实验内容(一) 八分法画圆圆心位于原点的
24、圆有4条对称轴x=0,y=0,y=x,y=-x。若已知圆上任一点(x,y),可以得到其在圆周上关于四条对称轴的另外7个点(y,x),(-x,y),(-x,-y),(-y,-x),(y,-x),(x,-y)。(二) 中点Bresenham画圆算法算法步骤如下:输入圆的半径R计算初始值d=1-R,x=0,y=R。绘制点(x,y)及其在八分圆中的另外7个对称点。判断d的符号。若d<0,则先将d更新为d+2x+3,再将(x,y)更新为(x+1,y);否则先将d更新为d+2(x-y)+5,再将(x,y)更新为(x+1,y-1)。当x<y时,重复步骤和;否则结束。(三) 椭圆的中点Bresen
25、ham算法算法步骤如下:输入椭圆的长半轴a和短半轴b。计算初始值d=b2+a2(-b+0.25),x=0,y=b。绘制点(x,y)及其在四分象限上的另外三个对称点。判断d的符号。若d<=0,则先将d更新为d+b2(2x+3),再将(x,y)更新为(x+1,y);否则先将d更新为d+b2(2x+3)+a2(-2y+2),再将(x,y)更新为(x+1,y-1)。当b2(x+1)<a2(y-0.5)时,重复步骤和;否则转到步骤。用上半部分计算的最后点(x,y)来计算下半部分中d的初值d=b2(x+0.5)2+a2(y-1)2-a2b2绘制点(x,y)及其在四分象限上的另外三个对称点。判断
26、d的符号。若d<=0,则先将d更新为d+b2(2x+2)+a2(-2y+3),再将(x,y)更新为(x+1,y-1);否则先将d更新为d+a2(-2y+3),再将(x,y)更新为(x,y-1)。当y>=0时,重复步骤和;否则结束。3. 实验代码及结果3.1八分法画圆程序代码:#include<gl/glut.h>#include<windows.h>void Initial(void) glClearColor(1.0f,1.0f,1.0f,1.0f); /设置窗口背景颜色为白色 glMatrixMode(GL_PROJECTION); /指定设置投影参数
27、gluOrtho2D(0.0,200.0,0.0,150.0); /设置投影参数void CirclePoint(int x,int y,int color) glVertex2i(x+50,y+50); glVertex2i(y+50,x+50); glVertex2i(-y+50,x+50); glVertex2i(-x+50,y+50); glVertex2i(-x+50,-y+50); glVertex2i(-y+50,-x+50); glVertex2i(y+50,-x+50); glVertex2i(x+50,-y+50);void Display(void) glClear(GL
28、_COLOR_BUFFER_BIT); /用当前背景颜色填充窗口 glColor3f(1.0f,0.0f,0.0f); /设置当前的绘图颜色为红色 glPointSize(10); glBegin(GL_POINTS); CirclePoint(10,20,20); glEnd(); glFlush(); /清空OpenGL命令缓冲区,执行OpenGL程序int main(int argc,char*argv) glutInit(&argc,argv); glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB); /初始化窗口的显示模式 glutInitWin
29、dowSize(400,300); /设置窗口的尺寸 glutInitWindowPosition(100,120); /设置窗口位置 glutCreateWindow("矩形"); /创建一个名为矩形的窗口 glutDisplayFunc(Display); /设置当前窗口的显示回调函数 Initial(); /完成窗口初始化 glutMainLoop(); /完成窗口GLUT事件处理循环 return 0;实验结果:3.2中点Bresenham 算法绘制圆代码#include<gl/glut.h>#include<windows.h>void I
30、nitial(void) glClearColor(1.0f,1.0f,1.0f,1.0f); /设置窗口背景颜色为白色 glMatrixMode(GL_PROJECTION); /指定设置投影参数 gluOrtho2D(0.0,200.0,0.0,150.0); /设置投影参数void CirclePoint(int x,int y,int color) glVertex2i(x+50,y+50); glVertex2i(y+50,x+50); glVertex2i(-y+50,x+50); glVertex2i(-x+50,y+50); glVertex2i(-x+50,-y+50); g
31、lVertex2i(-y+50,-x+50); glVertex2i(y+50,-x+50); glVertex2i(x+50,-y+50);void MidBresenhamCircle(int r,int color) int x,y,d; x=0;y=r;d=1-r; while(x<=y) CirclePoint(x,y,color);if(d<0)d+=2*x+3;else d+=2*(x-y)+5;y-; x+; void Display(void) glClear(GL_COLOR_BUFFER_BIT); /用当前背景颜色填充窗口 glColor3f(1.0f,0.
32、0f,0.0f); /设置当前的绘图颜色为红色 glPointSize(3); glBegin(GL_POINTS); MidBresenhamCircle(20,10); glEnd(); glFlush(); /清空OpenGL命令缓冲区,执行OpenGL程序int main(int argc,char*argv) glutInit(&argc,argv); glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB); /初始化窗口的显示模式 glutInitWindowSize(400,300); /设置窗口的尺寸 glutInitWindowPositi
33、on(100,120); /设置窗口位置 glutCreateWindow("矩形"); /创建一个名为矩形的窗口 glutDisplayFunc(Display); /设置当前窗口的显示回调函数 Initial(); /完成窗口初始化 glutMainLoop(); /完成窗口GLUT事件处理循环 return 0;实验结果:3.3中点Bresenham 算法绘制椭圆代码:#include<gl/glut.h>#include<windows.h>void Initial(void) glClearColor(1.0f,1.0f,1.0f,1.0f
34、); /设置窗口背景颜色为白色 glMatrixMode(GL_PROJECTION); /指定设置投影参数 gluOrtho2D(0.0,200.0,0.0,150.0); /设置投影参数void MidBresenhamEllipse(int a,int b,int color) int x,y; float d1,d2; x=0;y=b; d1=b*b+a*a*(-b+0.25); glVertex2i(x+50,y+50); glVertex2i(-x+50,-y+50); glVertex2i(-x+50,y+50); glVertex2i(x+50,-y+50); while(b*
35、b*(x+1)<a*a*(y-0.5) if(d1<=0) d1+=b*b*(2*x+3); x+;else d1+=b*b*(2*x+3)+a*a*(-2*y+2); x+;y-;glVertex2i(x+50,y+50); glVertex2i(-x+50,-y+50);glVertex2i(-x+50,y+50); glVertex2i(x+50,-y+50); d2=b*b*(x+0.5)*(x+0.5)+a*a*(y-1)-a*a*b*b; while(y>0) if(d2<=0) d2+=b*b*(2*x+2)+a*a*(-2*y+3); x+;y-;els
36、e d2+=a*a*(-2*y+3); y-;glVertex2i(x+50,y+50); glVertex2i(-x+50,-y+50);glVertex2i(-x+50,y+50); glVertex2i(x+50,-y+50); void Display(void) glClear(GL_COLOR_BUFFER_BIT); /用当前背景颜色填充窗口 glColor3f(1.0f,0.0f,0.0f); /设置当前的绘图颜色为红色 glPointSize(3); glBegin(GL_POINTS);MidBresenhamEllipse(40,25,10); glEnd(); glFl
37、ush(); /清空OpenGL命令缓冲区,执行OpenGL程序int main(int argc,char*argv) glutInit(&argc,argv); glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB); /初始化窗口的显示模式 glutInitWindowSize(400,300); /设置窗口的尺寸 glutInitWindowPosition(100,120); /设置窗口位置 glutCreateWindow("矩形"); /创建一个名为矩形的窗口 glutDisplayFunc(Display); /设置当前窗
38、口的显示回调函数 Initial(); /完成窗口初始化 glutMainLoop(); /完成窗口GLUT事件处理循环 return 0;实验结果:实验四 填充算法实验1. 实验目的掌握用扫描线种子填充法,实现扫描线种子填充算法填充任一多边形区域的程序2. 实验内容算法步骤如下:(1)种子像素入栈。(2)执行如下三步操作:栈顶像素出栈。填充出栈像素所在扫描线的连续像素段,从出栈的像素开始沿扫描线向左和向右填充,直到遇到边界像素为止,即每出栈一个像素,就对包含该像素的整个扫描线区间进行填充,并且记录下此时扫描线区间的x坐标范围x1,x2。分别检查上、下两条扫描线上位于x1,x2坐标区间内的未被
39、填充的连续水平像素段,将每个连续像素段的最左像素取作种子像素压人栈堆。(3)检查栈是否为空,若栈非空重复执行步骤(2),若栈为非空则结束。3. 实验代码及结果代码:#include "gl/glut.h"#include "math.h"#include "stdlib.h"#include "conio.h"#include <stack>typedef float Color3;struct PointGLint x;GLint y;std:stack<Point> stk;void i
40、nit(void) glClearColor(1.0,1.0,1.0,1.0);/Set display-window color white. glMatrixMode(GL_PROJECTION); gluOrtho2D(0.0,400.0,0.0,400.0);void setPixel(GLint x,GLint y);/种子像素坐标void setPixel(Point cur_point) glBegin(GL_POINTS); glVertex2i(cur_point.x,cur_point.y); glEnd(); glFlush();void getPixel(Point c
41、ur_point,Color c) glReadPixels(cur_point.x,cur_point.y,1,1,GL_RGB,GL_FLOAT,c);bool rgbColorEqual(Color c1,Color c2) /c1颜色数据与c2颜色数据,当正负误差不超过0.0001时,返回值为1,否则为0if(abs(c10-c20)>0.001)|(abs(c11-c21)>0.001)|(abs(c12-c22)>0.001)return 0;else return 1;int FillLineRegion(Point cur_point,Color fillCo
42、lor,Color borderColor,int direction) int count=0; Color interiorColor; glColor3f(fillColor0,fillColor1,fillColor2); getPixel(cur_point,interiorColor); while(!(rgbColorEqual(interiorColor,borderColor)&&!(rgbColorEqual(interiorColor,fillColor) /这个判断保证读取的像素的颜色数据与边界颜色还有填充颜色数据在数值上相差较大 /即当正读取像素不是多
43、边形边界,且也没有被填充,则执行以下花括号内的操作 setPixel(cur_point); /setcolot of pixel to fillColor. /为坐标为(x,y)的像素上色if(direction=0)cur_point.x+;elsecur_point.x-;getPixel(cur_point,interiorColor); count+; return count;int IsPixelValid(Point cur_point,Color fillColor,Color borderColor) Color interiorColor;getPixel(cur_poi
44、nt,interiorColor);if(!(rgbColorEqual(interiorColor,borderColor)&&!(rgbColorEqual(interiorColor,fillColor)return 1;elsereturn 0;void SearchLineNewSeed(int xLeft,int xRight,int y,Color fillColor,Color borderColor)/在种子像素所在扫描线上一条或下一条是扫描线寻找新种子像素 int xt=xLeft; int seed_left=-1; Point seed_point; P
45、oint temp_point; while(xt<=xRight) seed_left=-1; temp_point.x=xt; temp_point.y=y; while(xt<=xRight) /find the first valid point if(IsPixelValid(temp_point,fillColor,borderColor) seed_left=temp_point.x;break;else xt+;temp_point.x=xt;while(xt<=xRight) /find the next invalid point if(IsPixelVa
46、lid(temp_point,fillColor,borderColor) xt+; temp_point.x=xt;else break;if(seed_left!=-1) seed_point.x=seed_left; seed_point.y=y; stk.push(seed_point); void scanLine(Point cur_point,Color fillColor,Color borderColor) int count=0; int right,left; Point temp_point; while(!stk.empty() Point seed_point=st
47、k.top(); stk.pop(); /种子像素出栈 count=FillLineRegion(seed_point,fillColor,borderColor,0);/填充种子像素所在的扫描线右边 right=seed_point.x+count-1; temp_point.x=seed_point.x-1; temp_point.y=seed_point.y; count=FillLineRegion(temp_point,fillColor,borderColor,1);/填充种子像素所在扫描线左边 left=seed_point.x-count; SearchLineNewSeed(
48、left,right,seed_point.y-1,fillColor,borderColor);/在种子·像素所在扫描线上方一条扫描线寻找新种子像素 SearchLineNewSeed(left,right,seed_point.y+1,fillColor,borderColor);/在种子像素所在扫描线寻找新种子像素 return;void myDraw(void) glClear(GL_COLOR_BUFFER_BIT); glColor3f(0.0,0.0,0.0); glBegin(GL_LINE_LOOP); glVertex2f(20.0f,80.0f); glVertex2f(30.0f,95.0f); glVertex2f(50.0f,95.0f); glVertex2f(60.0f,80.0f); glVertex2f(70.0f,95.0f); glVertex2f(90.0f,95.0f); glVertex2f(100.0f,80.0f); glVertex2f(60.0f,30.0f); glEnd(); /int x=60,y=60;/种子像
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度消防设备定期检修与维保服务合同3篇
- 2024年矿区土石方工程综合施工承包合同一
- 04 完形填空15篇-2023-2024学年八年级下册期中满分突破(重庆专用)
- 关于疫情应急措施
- 欠款催缴函范文
- 信息技术部职责
- 园林绿化种植施工方案计划
- 供暖室内系统施工工艺流程
- 建筑施工现场材料管理措施
- 委托参于证券市场操作协议
- HIV阳性孕产妇全程管理专家共识2024年版解读
- 小学体育跨学科主题学习教学设计:小小志愿军
- 附件2:慢病管理中心评审实施细则2024年修订版
- 《ISO56001-2024创新管理体系 - 要求》之4:“4组织环境-确定创新管理体系的范围”解读和应用指导材料(雷泽佳编制-2024)
- 2024-2030年中国散热产业运营效益及投资前景预测报告
- 和父亲断绝联系协议书范本
- 2024时事政治考试题库(100题)
- 2024地理知识竞赛试题
- 《城市轨道交通工程盾构吊装技术规程》(征求意见稿)
- 【新教材】统编版(2024)七年级上册语文期末复习课件129张
- 钦州市浦北县2022-2023学年七年级上学期期末语文试题
评论
0/150
提交评论