0复习参考题3、请使用OpenGL和GLUT编写一个简单的图形程序,用于显示一个填充的白色矩形。其中矩形规定为(-0.8,-0.8)~(0.8,0.8),程序窗口的大小为(200,200),标题为“白色矩形”。#includeGL/glut.hvoidPaint(){glClear(GL_COLOR_BUFFER_BIT);glRectf(-0.8,-0.8,0.8,0.8);glFlush();}intmain(){glutInitWindowSize(200,200);glutCreateWindow(白色矩形);glutDisplayFunc(Paint);glutMainLoop();}4、请使用OpenGL和GLUT编写一个简单的图形程序,用于显示一个填充的红色三角形。其中三角形的顶点分别是(-0.8,-0.8)、(0.8,-0.8)和(0,0.8),程序窗口大小为(200,200),标题为“红色三角形”。#includeGL/glut.hvoidPaint(){glClear(GL_COLOR_BUFFER_BIT);glColor3f(1,0,0);glBegin(GL_TRIANGLES);glVertex2d(-0.8,-0.8),glVertex2d(0.8,-0.8),glVertex2d(0,0.8);glEnd();glFlush();}intmain(){glutInitWindowSize(200,200);glutCreateWindow(红色三角形!);glutDisplayFunc(Paint);glutMainLoop();}5、请使用OpenGL和GLUT编写一个简单的图形程序,用于演示点的反走样效果。要求使用线段(-0.6,-0.6)~(0.6,0.6)上均匀分布的5个点(含端点),点的大小为10.5像素,程序窗口的大小为(200,200),标题为“点的反走样”。#includeGL/glut.hvoidPaint(){doublex;glClear(GL_COLOR_BUFFER_BIT);glBegin(GL_POINTS);for(x=-0.6;x=0.6;x+=0.3)glVertex2f(x,x);glEnd();glFlush();}intmain(){glutInitWindowSize(200,200);glutCreateWindow(点的反走样);glutDisplayFunc(Paint);glPointSize(10.5);glEnable(GL_POINT_SMOOTH);glutMainLoop();}6、请使用OpenGL和GLUT编写一个简单的图形程序,用于演示线段的反走样效果。其中线段的端点为(-0.6,-0.3)和(0.6,0.3),线宽为4.5像素,程序窗口的大小为(200,200),标题为“线段的反走样”。#includeGL/glut.hvoidPaint(){glClear(GL_COLOR_BUFFER_BIT);glBegin(GL_LINES);glVertex2f(-0.6,-0.6),glVertex2f(0.6,0.6);glEnd();glFlush();}intmain(){glutInitWindowSize(200,200);glutCreateWindow(线段的反走样);glutDisplayFunc(Paint);glLineWidth(5);glEnable(GL_LINE_SMOOTH);glutMainLoop();}}}25、请使用OpenGL、GLU和GLUT编写一个三维犹他茶壶程序。其中茶壶的半径为1单位,并远移6.5单位;观察体规定为:视场角=30度,宽高比=1,近=1,远=100;程序窗口的大小为(200,200),标题为“尤他茶壶”。#includeGL/glut.hvoidPaint(){glClear(GL_COLOR_BUFFER_BIT);glLoadIdentity();gluPerspective(30,1,1,100);glTranslatef(0,0,-6.5);glutSolidTeapot(1);glFlush();}intmain(){glutInitWindowSize(200,200);glutCreateWindow(尤他茶壶);glutDisplayFunc(Paint);glutMainLoop();}26、请使用OpenGL和GLUT编写一个显示线框球体的简单图形程序。其中球体的半径为0.8,经线数为24,纬线数为12,并绕x轴旋转30度,程序窗口的大小为(200,200),标题为“线框球”。#includeGL/glut.hvoidPaint(){glClear(GL_COLOR_BUFFER_BIT);glLoadIdentity();glRotated(30,1,0,0);glutWireSphere(0.8,24,12);glFlush();}intmain(){glutInitWindowSize(200,200);glutCreateWindow(线框球);glutDisplayFunc(Paint);glutMainLoop();}27、请使用OpenGL和GLUT编写一个显示线框椭球体的简单图形程序。其中椭球体的两极方向为上下方向,左右方向的半径为0.98,上下方向的半径为0.49,前后方向的半径为0.6,经线数为48,纬线数为24,使用正投影,裁剪窗口为(-1,-0.5)~(1,0.5),程序窗口的大小为(400,200),标题为“线框椭球”。#includeGL/glut.hvoidPaint(){glClear(GL_COLOR_BUFFER_BIT);glLoadIdentity();gluOrtho2D(-1,1,-0.5,0.5);glScaled(0.98,0.49,0.6);glRotated(-90,1,0,0);//调整两极方向glutWireSphere(1,48,24);glFlush();}intmain(){glutInitWindowSize(400,200);glutCreateWindow(线框椭球);glutDisplayFunc(Paint);glutMainLoop();}28、请使用OpenGL、GLU和GLUT编写一个三维犹他茶壶程序。其中茶壶的半径为1单位,并远移6.5单位;观察体规定为:视场角=30度,宽高比=1,近=1,远=100;程序窗口的大小为(200,200),标题为“旋转的尤他茶壶”。茶壶绕z轴不断旋转,旋转的时间间隔为25毫秒,角度间隔为2度。注意旋转角度必须限定在0~360度以内。#includegl/glut.hintangle=0;voidPaint(){glClear(GL_COLOR_BUFFER_BIT);glLoadIdentity();gluPerspective(30,1,1,100);glTranslatef(0,0,-6.5);glRotated(angle,0,0,1);glutSolidTeapot(1);glFlush();}voidtimer(intmillis){angle=(angle+2)%360;glutPostRedisplay();glutTimerFunc(millis,timer,millis);}intmain(){glutInitWindowSize(200,200);glutCreateWindow(旋转的尤他茶壶);glutTimerFunc(25,timer,25);glutDisplayFunc(Paint);glutMainLoop();}29、请使用OpenGL、GLU和GLUT编写一个简单的多视口演示程序。要求:在屏幕窗口左下角的1/4部分显示一个红色的填充正三角形;在屏幕窗口右上角的1/4部分显示一个绿色的填充正方形;三角形和正方形的左下角顶点坐标值均为(0,0),右下角顶点坐标值均为(1,0);裁剪窗口均为(-0.1,-0.1)~(1.1,1.1);程序窗口的大小为(200,200),标题为“多视口演示”。#includegl/glut.hvoidViewport(intx,inty,intw,inth){glViewport(x,y,w,h);glLoadIdentity();gluOrtho2D(-0.1,1.1,-0.1,1.1);}voidTriangle(){glBegin(GL_TRIANGLES);glVertex2d(0,0);glVertex2d(1,0);glVertex2d(0.5,0.8660);glEnd();}voidPaint(){intw=glutGet(GLUT_WINDOW_WIDTH)/2;inth=glutGet(GLUT_WINDOW_HEIGHT)/2;glClear(GL_COLOR_BUFFER_BIT);Viewport(0,0,w,h);glColor3f(1,0,0);Triangle();Viewport(w,h,w,h);glColor3f(0,1,0);glRectd(0,0,1,1);glFlush();}intmain(){glutInitWindowSize(200,200);glutCreateWindow(多视口演示);glutDisplayFunc(Paint);glutMainLoop();}30、请使用OpenCV编写一个简单的程序,用于从当前目录读入并显示一幅图像(例如当前目录中的lena.jpg)。#includeopencv/cv.h//CV#includeopencv/highgui.h//GUIintmain(){IplImage*im=//声明IplImage指针,载入彩色图像cvLoadImage(lena.jpg,CV_LOAD_IMAGE_COLOR);if(im==0)return-1;//载入失败cvNamedWindow(FirstOpenCV,CV_WINDOW_AUTOSIZE);//创建窗口cvShowImage(FirstOpenCV,im);//显示图像while(cvWaitKey(0)!=27){}//等待按Esc键cvDestroyWindow(FirstOpenCV);//销毁窗口cvReleaseImage(&im);//释放图像}31、请使用OpenCV编写一个简单的程序,该程序首先读入一幅彩色图像(例如当前目录中的lena.jpg),然后将这幅彩色图像的3个通道分离出来,得到3幅灰度图像,最后显示这3幅灰度图像并释放相关资源。32、使用OpenCV编写一个演示傅立叶变换和逆变换的程序。该程序首先装入一幅灰度图像并显示该图像(例如当前目录中的lena.jpg),然后对该图像进行傅立叶正变换,对得到的结果进行傅立叶逆变换,显示得到的结果以便与原图像进行比对。#includeopencv/cv.h#includeopencv/highgui.hintmain(){CvMat*X=cvLoadImageM(lena.jpg,0);CvMat*Y=cvCreateMat(X-rows,X-cols,CV_64F);cvScale(X,Y,(double)1/255,0);cvDFT(Y,Y,CV_DXT_FORWARD,0);cvDFT(Y,Y,CV_DXT_INVERSE_SCALE,0);cvShowImage(src,X),cvShowImage(dst,Y);cvWaitKey(0);cvReleaseMat(&X),cvReleaseMat(&Y);cvDestroyAllWindows();}33、使用OpenCV编写一个程序,该程序对一幅彩色图像(例如当前目录中的lena.jpg)进行一次中值模糊,要求分别显示源图像和模糊化