计算机图形学实验报告一.docx
- 文档编号:23009177
- 上传时间:2023-04-30
- 格式:DOCX
- 页数:11
- 大小:87.67KB
计算机图形学实验报告一.docx
《计算机图形学实验报告一.docx》由会员分享,可在线阅读,更多相关《计算机图形学实验报告一.docx(11页珍藏版)》请在冰豆网上搜索。
计算机图形学实验报告一
《计算机图形学》实验报告
一、实验要求
1、练习使用GDI函数绘出基本几何元素,如点、线、矩形、圆、椭圆、多边形、圆弧等、并能够用颜色填充
2、练习使用GDI函数显示图像
3、使用opengl函数写一个控制台程序,要求输出一些简单的二维图形:
如线(实线、虚线)、四边形、多边形、圆、六面体、球、圆锥、茶壶等。
二、实验目的
1.掌握Window图形编程的基本方法;
2.学会使用基本绘图函数和WindowGDI对象;
三、实验环境
Windows系统,vs2017
四、实验内容与步骤
1、练习使用GDI函数绘出基本几何元素,如点、线、矩形、圆、椭圆、多边形、圆弧等、并能够用颜色填充
//线
pDC->MoveTo(100,50);
pDC->LineTo(200,100);
pDC->SelectObject(&pOldPen1);
//矩形
pDC->Rectangle(250,50,550,175);
pDC->SelectObject(&pOldPen2);
pDC->SelectObject(&pOldBrush);
pen2.DeleteObject();
//圆
pDC->SelectObject(&pen2);
pDC->Ellipse(50,120,150,220);
pDC->SelectObject(&pOldBrush);
//椭圆
pDC->SelectObject(&pen2);
pDC->Ellipse(600,100,1025,325);
pDC->SelectObject(&pOldBrush);
//多边形
pDC->SelectObject(&pen2);
pDC->SelectObject(&pen2);
CPointlpPoint[5];
lpPoint[0]=CPoint(200,200);
lpPoint[1]=CPoint(100,300);
lpPoint[2]=CPoint(150,400);
lpPoint[3]=CPoint(250,400);
lpPoint[4]=CPoint(300,300);
pDC->Polygon(lpPoint,5);
//圆弧
pDC->SelectObject(&pen2);
pDC->SelectObject(&pen2);
pDC->Arc(450,200,650,550,50,50,600,900);
2、练习使用GDI函数显示图像
3.使用opengl函数写一个控制台程序,要求输出一些简单的二维图形:
如线(实线、虚线)、四边形、多边形、圆、六面体、球、圆锥、茶壶等。
voiddisplay(void)
{
glClearColor(1.0f,1.0f,1.0f,1.0f);
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glColor3f(1.0,0.0,0.0);
glLineWidth(3.0);
//线
glBegin(GL_LINES);
glVertex2f(-0.75,0.9);
glVertex2f(-0.25,0.9);
glEnd();
//虚线
glLineStipple(1,0x00FF);
glEnable(GL_LINE_STIPPLE);
glBegin(GL_LINES);
glVertex2f(-0.75,0.8);
glVertex2f(-0.25,0.8);
glEnd();
glLineStipple(2,0x00FF);
glBegin(GL_LINES);
glVertex2f(-0.75,0.7);
glVertex2f(-0.25,0.7);
glEnd();
glLineStipple(1,0x0C0F);
glBegin(GL_LINES);
glVertex2f(-0.75,0.6);
glVertex2f(-0.25,0.6);
glEnd();
glLineStipple(3,0x0C0F);
glBegin(GL_LINES);
glVertex2f(-0.75,0.5);
glVertex2f(-0.25,0.5);
glEnd();
glLineStipple(1,0xAAAA);
glBegin(GL_LINES);
glVertex2f(-0.75,0.4);
glVertex2f(-0.25,0.4);
glEnd();
glLineStipple(2,0xAAAA);
glBegin(GL_LINES);
glVertex2f(-0.75,0.3);
glVertex2f(-0.25,0.3);
glEnd();
glLineStipple(3,0xAAAA);
glBegin(GL_LINES);
glVertex2f(-0.75,0.2);
glVertex2f(-0.25,0.2);
glEnd();
glLineStipple(4,0xAAAA);
glBegin(GL_LINES);
glVertex2f(-0.75,0.1);
glVertex2f(-0.25,0.1);
glEnd();
glDisable(GL_LINE_STIPPLE);
glRectf(-0.25,-0.25,-0.75,-0.75);
glPolygonMode(GL_FRONT,GL_FILL);
glPolygonMode(GL_BACK,GL_LINE);
glBegin(GL_POLYGON);
glVertex3f(0.2,0.1,0.0);
glVertex3f(0.6,0.3,0.0);
glVertex3f(0.7,0.45,0.0);
glVertex3f(0.4,0.75,0.0);
glVertex3f(0.1,0.6,0.0);
glEnd();
glBegin(GL_POLYGON);
for(inti=0;i glVertex2f(R*cos(2*Pi/n*i)+0.5,R*sin(2*Pi/n*i)-0.5); glEnd(); glFlush(); } //主程序 voidmain(intargc,char**argv) { glutInit(&argc,argv); glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB); glutInitWindowSize(1000,1000); glutInitWindowPosition(0,0); glutCreateWindow("实验一"); glutDisplayFunc(&display); glutMainLoop(); } 茶壶 voiddisplay(void) { glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); glColor3f(0.0,1.0,0.0);//绿色绘制 glEnable(GL_DEPTH_TEST);//深度缓冲区 glutWireTeapot (2);//绘制茶壶 glFlush(); glutSwapBuffers(); } voidreshape(intw,inth) { glViewport(0,0,w,h);//设置视口 glMatrixMode(GL_PROJECTION);//将当前矩阵指定为投影模式 glLoadIdentity(); gluPerspective(60,(GLfloat)w/(GLfloat)h,1.0,20);//创建透视投影矩阵 glMatrixMode(GL_MODELVIEW); glLoadIdentity(); gluLookAt(0,5,5,0,0,0,0,1,0);//观测点 } 球 voiddisplay(void) { glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); glColor3f(0.0,1.0,0.0);//绿色绘制 glEnable(GL_DEPTH_TEST);//深度缓冲区 glutWireSphere(1,20,16);//绘制球体 glFlush(); glutSwapBuffers(); } voidreshape(intw,inth) { glViewport(0,0,w,h);//设置视口 glMatrixMode(GL_PROJECTION);//将当前矩阵指定为投影模式 glLoadIdentity(); gluPerspective(60,(GLfloat)w/(GLfloat)h,1.0,20);//创建透视投影矩阵 glMatrixMode(GL_MODELVIEW); glLoadIdentity(); gluLookAt(0,3,3,0,0,0,1,1,0);//观测点 } 六面体 voiddisplay(void) { glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); glColor3f(0.0,1.0,0.0);//绿色绘制 glEnable(GL_DEPTH_TEST);//深度缓冲区 glutWireCube(3);//绘制立方体 glFlush(); glutSwapBuffers(); } voidreshape(intw,inth) { glViewport(0,0,w,h);//设置视口 glMatrixMode(GL_PROJECTION);//将当前矩阵指定为投影模式 glLoadIdentity(); gluPerspective(60,(GLfloat)w/(GLfloat)h,1.0,20);//创建透视投影矩阵 glMatrixMode(GL_MODELVIEW); glLoadIdentity(); gluLookAt(0,5,5,0,0,0,1,1,0);//观测点 } 五、实验分析与讨论 1.在配置是可以下载一些包 2.学会如何画一些简单的图形 3.在实验中也培养了自己的耐心,总归,有不少收获。 教师评语: 签名: 日期: 成绩:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 图形学 实验 报告