计算机图形学试验报告一
《计算机图形学》《计算机图形学》 实验报告实验报告 一、实验要求一、实验要求 1、 练习使用 GDI 函数绘出基本几何元素,如点、线、矩形、圆、椭圆、多 边形、圆弧等、并能够用颜色填充 2、练习使用 GDI 函数显示图像 3、使用 opengl 函数写一个控制台程序,要求输出一些简单的二维图形:如 线(实线、虚线) 、四边形、多边形、圆、六面体、球、圆锥、茶壶等。 二、实验目的二、实验目的 1.掌握 Window 图形编程的基本方法; 2.学会使用基本绘图函数和 Window GDI 对象; 三、实验环境三、实验环境 Windows 系统,vs2017 四、实验内容与步骤四、实验内容与步骤 1、 练习使用 GDI 函数绘出基本几何元素,如点、线、 矩形、圆、椭圆、多边形、 圆弧等、并能够用颜色填充 //线 pDC-MoveTo(100, 50); pDC-LineTo(200, 100); pDC-SelectObject( //矩形 pDC-Rectangle(250, 50, 550,175); pDC-SelectObject( pDC-SelectObject( pen2.DeleteObject(); //圆 pDC-SelectObject( pDC-Ellipse(50,120,150,220); pDC-SelectObject( //椭圆 pDC-SelectObject( pDC-Ellipse(600, 100, 1025, 325); pDC-SelectObject( //多边形 pDC-SelectObject( pDC-SelectObject( CPoint lpPoint[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( pDC-SelectObject( pDC-Arc(450,200,650,550,50,50,600,900); 2、 练习使用 GDI 函数显示图像 3.使用 opengl 函数写一个控制台程序, 要求输出一些简单的二维图形: 如线 (实 线、虚线) 、四边形、多边形、圆、六面体、球、圆锥、茶壶等。 void display(void) { glLineStipple(1, 0 xAAAA); glBegin(GL_LINES); glVertex2f(-0.75, 0.4); glVertex2f(-0.25, 0.4); glLineStipple(3, 0 x0C0F); glBegin(GL_LINES); glVertex2f(-0.75, 0.5); glVertex2f(-0.25, 0.5); glEnd(); glLineStipple(1, 0 x0C0F); glBegin(GL_LINES); glVertex2f(-0.75, 0.6); glVertex2f(-0.25, 0.6); glEnd(); glLineStipple(2, 0 x00FF); glBegin(GL_LINES); glVertex2f(-0.75, 0.7); glVertex2f(-0.25, 0.7); glEnd(); glLineWidth(3.0); //线 glBegin(GL_LINES); glVertex2f(-0.75, 0.9); glVertex2f(-0.25, 0.9); glEnd(); //虚线 glLineStipple(1, 0 x00FF); glEnable(GL_LINE_STIPPLE); glBegin(GL_LINES); glVertex2f(-0.75, 0.8); glVertex2f(-0.25, 0.8); glEnd(); 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); } glEnd(); glLineStipple(2, 0 xAAAA); glBegin(GL_LINES); glVertex2f(-0.75, 0.3); glVertex2f(-0.25, 0.3); glEnd(); glLineStipple(3, 0 xAAAA); glBegin(GL_LINES); glVertex2f(-0.75, 0.2); glVertex2f(-0.25, 0.2); glEnd(); glLineStipple(4, 0 xAAAA); 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 (int i = 0; in; i++) glVertex2f(R*cos(2 * Pi / n*i) + 0.5, R*sin(2 * Pi / n*i) - 0.5); glEnd(); gl(); //主程序 void main(int argc, char * *argv) { } glutInit( glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); glutInitWindowSize(1000, 1000); glutInitWindowPosition(0, 0); glutCreateWindow(“实验一“); glutDisplayFunc( glutMainLoop(); 茶壶 void display(void) { } void reshape(int w, int h) { glViewport(0, 0, w, h);//设置视口 glMatrixMode(GL_PROJECTION);//将当前矩阵指定为投影模式 glLoadIdentity(); glutWireTeapot(2);//绘制茶壶 gl(); glutSwapBu