当前位置:文档之家› 计算机图形学作业

计算机图形学作业

计算机图形学上机作业实验A01:知识点:OpenGL,OpenGL安装,调试,程序基本结构,颜色,定义点实验任务:(1)完成Chap31程序,并运行出结果。

void display(void){ //回调函数没有参数,通常由绘图程序组成glClear(GL_COLOR_BUFFER_BIT);//用main中glClearColor指定的颜色清除缓冲区glColor3f(1.0,0,0); //设置当前色glPointSize(4.0); //设置点的大小glBegin(GL_POINTS);//开始绘制图形,本语句为画点,可修改为GL_LINE,GL_LINE_STRIP,GL_LINE_LOOP,比较运行结果glVertex2i(0,0);glVertex2i(0,299);glVertex2i(399,0);glVertex2i(399,299);glEnd(); //绘制结束glFlush(); //刷新OpenGL命令队列,促使glFlush之前的语句都执行}void main(int argc,char **argv){glutInit(&argc,argv);//对GLUT初始化,并处理与系统有关的命令行参数glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);//要求系统提供一个RGB缓冲区glutInitWindowSize(400,300); // 窗口大小glutInitWindowPosition(200,100); // 窗口位置glutCreateWindow("sample"); //创建窗口glClearColor(1,1,1,0.0);// 设置清除RGB缓冲区的颜色为黑色(黑色为默认值)gluOrtho2D(0.0,400.0,0.0,300.0);//在对象空间里定义视图窗口,修改参数比较显示结果glutDisplayFunc(display);//图像初始显示以及随后的重新显示时调用display glutMainLoop(); //进入GLUT事件处理循环,是main的最后一句}(2)完成Chap32程序,并运行出结果,完成习题3.6glColor3f(0,1.0,0.0); glLineWidth(3); glLineWidth(3);glPointSize(3.0); glBegin(GL_LINES); glBegin(GL_LINE_LOOP);习题3-6:GLfloat r(double angle){return cos(2*angle)*sin(angle);}B013.1 glutInitWindowSize(800,300); 图像视窗大小改变3.2 glVertex2f(0,299); 右下点还在glVertex2f(399.9,0);右下角的点看不见了3.3 使用浮点坐标可以使绘图坐标系的原点位于左下角像素的中心位置3.5 glColor3f(1.0,0,0); //设置当前色glVertex2f(0,0);glColor3f(0,1,0);glVertex2f(0,299);glColor3f(0,1,1);glVertex2f(399.4,0.51);glColor3f(0,1,0);glVertex2f(399,299);每个点的颜色都不同。

实验A02知识点:OpenGL绘制线,设置线形、线宽实验任务:用4.7.1给出的符号常数绘制线,4.7.3.1的方法绘制不同的线(1)绘制单独的线段(GL_LNES) glBegin(GL_LINES);(2)绘制不封闭折线(GL_LINE_STRIP) glBegin(GL_LINE_STRIP); (3)绘制封闭折线(GL_LINE_LOOP) glBegin(GL_LINE_LOOP); (4)绘制虚线 glEnable(GL_LINE_STIPPLE);//线型 glLineStipple(2,0X00FF);glBegin(GL_LINES);B02//绘制二维松树display(void){glClear(GL_COLOR_BUFFER_BIT) glColor3f(1.0,0.0,0.0);glLineWidth(2.0);glBegin(GL_TRIANGLES);glVertex2i(-25,0);glVertex2i(25,0);glVertex2i(0,15);glVertex2i(-20,10);glVertex2i(20,10);glVertex2i(0,30);glVertex2i(-15,20);glVertex2i(15,20);glVertex2i(0,45);glEnd();glBegin(GL_QUADS);glVertex2i(-5,0);glVertex2i(5,0);glVertex2i(5,-20);glVertex2i(-5,-20);glEnd();glFlush();}绘制二维五角星:void display1(void){glClear(GL_COLOR_BUFFER_BIT);glColor3f(1.0,0,0.0);glBegin(GL_LINE_LOOP);glVertex2i(-45,-50);glVertex2i(0,50); glVertex2i(45,-50); glVertex2i(-55,8); glVertex2i(55,8); glEnd(); glFlush();}绘制二维飞机:inta[][2]={{0,30},{5,15},{5,5},{15,5},{15,0},{5,0},{5,-8},{15,-10},{10,-15},{5,-8},{-5,-8},{-10,-15},{-15,-10},{-5,-8},{-5,0}, {-15,0},{-15,5},{-5,5},{-5,15}}; void display(void){ glClear(GL_COLOR_BUFFER_BIT); glColor3f(1.0,0.0,0.0); glLineWidth(2.0);glBegin(GL_LINE_LOOP); for(int i=0;i<19;i++) glVertex2iv(a[i]); glEnd(); glFlush(); }绘制三维物体: //绘制四面颜色不同的四面体 void display(void){ glClear(GL_COLOR_BUFFER_BIT); glLineWidth(2.0); glRotated(45,0,1,0);glBegin(GL_TRIANGLE_STRIP); glColor3f(1.0,0.0,0.0); glVertex3i(0,0,0); glColor3f(1.0,1.0,0.0); glVertex3i(20,0,0); glVertex3i(0,0,-20); glColor3f(1.0,0.0,1.0); glVertex3i(0,20,0); glVertex3i(20,0,0); glColor3f(0,0.1,1.0); glVertex3i(0,0,0); glVertex3i(0,0,-20); glEnd(); glFlush(); } //绘制立方体 glBegin(GL_QUADS); glColor3f(1.0,0.0,0.0); glVertex3i(0,0,0); glVertex3i(20,0,0);glVertex3i(20,0,-20);glVertex3i(0,0,-20);glColor3f(1.0,0.0,1.0);glVertex3i(0,0,-20);glVertex3i(20,0,-20);glVertex3i(20,20,-20);glVertex3i(0,20,-20);glColor3f(0,1.0,0.0);glVertex3i(0,20,0);glVertex3i(20,20,0);glVertex3i(20,20,-20);glVertex3i(0,20,-20); glColor3f(0,1.0,1.0);在空间中绘制两个三维图形:A03绘制凸多边形glBegin(GL_POLYGON); 绘制凹多边形:glPolygonMode(GL_FRONT_AND_BAC K_GL_LINE);glColor3f(1.0,0,0.0);glBegin(GL_TRIANGLES);glEdgeFlag(GL_TRUE);glVertex2i(10,20);glVertex2i(0,20);glEdgeFlag(GL_FALSE);glVertex2i(0,0);glVertex2i(10,20);glVertex2i(0,0);glEdgeFlag(GL_TRUE);glVertex2i(10,10);glVertex2i(0,0);三种绘制方式:点、边界、填充(上述凹多边形) /glPolygonMode(GL_FRONT_AND_BACK,GL_LINE);glPolygonMode(GL_FRONT_AND_BACK,GL_POINT);glPolygonMode(GL_FRONT_AND_BACK,GL_FILL);实验B03知识点:OpenGL 绘制多边形,非凸多边形,多边形的朝向与绘制 实验任务(1)用多边形构造复杂图形(2)绘制三维:面填充的立方体(需要为每个点着色)实验A03.5知识点:绘制GLUT 物体glutSolidSphere(1,20,20); //实心球 glutWireSphere(1,10,10); //线框球 glutSolidCube(2);//实心立方体 glutWireCube(2);//线框立方体glutSolidCone(1,2,10,10);//实心圆锥 glutWireCone(1,2,10,10);//线框圆锥glutSolidTorus(0.4,1.0,48,96); //实体圆环 glutWireTorus(0.4,1.0,48,96); //线框圆环glutSolidTeapot(1); //茶壶glutWireTeapot(1); //线框茶壶glutSolidTetrahedron();//实心四面体glutWireTetrahedron();//线框四面体glutSolidOctahedron ();//实心八面体glutWireOctahedron ();//线框八面体glutSolidDodecahedron ();//实心十二面体glutWireDodecahedron ();//线框十二面体glutSolidIcosahedron ();//实心二十面体glutWireIcosahedron ();//线框二十面体线框茶壶实心十二面体实心球实验B03.5知识点:绘制GLUT物体实验任务:用OpenGL的函数,绘制各种物体(1)在三维空间中任意位置绘制多个物体(如球,圆锥,圆环,立方体等)(2)用多个物体组合绘制一个特殊图形:如机器人。

相关主题