计算机图形学作业实验报告

上传人:豆浆 文档编号:92363418 上传时间:2019-07-09 格式:DOC 页数:17 大小:233.02KB
返回 下载 相关 举报
计算机图形学作业实验报告_第1页
第1页 / 共17页
计算机图形学作业实验报告_第2页
第2页 / 共17页
计算机图形学作业实验报告_第3页
第3页 / 共17页
计算机图形学作业实验报告_第4页
第4页 / 共17页
计算机图形学作业实验报告_第5页
第5页 / 共17页
点击查看更多>>
资源描述

《计算机图形学作业实验报告》由会员分享,可在线阅读,更多相关《计算机图形学作业实验报告(17页珍藏版)》请在金锄头文库上搜索。

1、计 算 机 图 形 学实 验 报 告班 级: 学 号: 姓 名: 指导教师: 完成日期: 实验一:多边形填充1、 实验目的 了解多边形属性,熟悉相关函数的调用。二、实验内容步骤和实现:首先进行初始化工作,进行显示模式(单缓冲区)和窗口等设定,主要实现根据两个函数,一个是指定场景绘制函数,glutDisplayFunc(Paint),paint函数中设置了两个三角形,一个填充,一个不填充。用到了启用多边形点画模式glEnable(GL_POLYGON_STIPPLE)的函数,和指定多边形点画模式(填充) glPolygonStipple(fly)的函数。另外一个就是循环执行OpenGl命令的gl

2、utMainLoop()函数。三、实验结果四、源程序/ POLY_STIPPLE.C#include void makeObject() / 定义一个三角形 glBegin(GL_TRIANGLES); / 开始定义三角形 / 按逆时针方向指定三角形的顶点坐标 glVertex2f(-0.95, -0.95); glVertex2f(0.95, -0.95); glVertex2f(0, 0.95); glEnd(); / 三角形定义结束void display() GLsizei w = glutGet(GLUT_WINDOW_WIDTH); / 程序窗口宽度 GLsizei h = glu

3、tGet(GLUT_WINDOW_HEIGHT); / 程序窗口高度 GLubyte fly = / 第二个三角形点画模式的mask值 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, / 0X03, 0X80, 0X01, 0XC0, 0X06, 0XC0, 0X03, 0X60, / 0X04, 0X60, 0X06, 0X20, 0X04, 0X30, 0X0C, 0X20, / 0X04, 0X18, 0X18, 0X20, 0X04, 0X0C, 0X30, 0X20, / 0X04, 0X06, 0X60, 0X20, 0X44, 0X

4、03, 0XC0, 0X22, / 0X44, 0X01, 0X80, 0X22, 0X44, 0X01, 0X80, 0X22, / 0X44, 0X01, 0X80, 0X22, 0X44, 0X01, 0X80, 0X22, / 0X44, 0X01, 0X80, 0X22, 0X44, 0X01, 0X80, 0X22, / 0X66, 0X01, 0X80, 0X66, 0X33, 0X01, 0X80, 0XCC, / 0X19, 0X81, 0X81, 0X98, 0X0C, 0XC1, 0X83, 0X30, / 0X07, 0XE1, 0X87, 0XE0, 0X03, 0X

5、3F, 0XFC, 0XC0, / 0X03, 0X31, 0X8C, 0XC0, 0X03, 0X33, 0XCC, 0XC0, / 0X06, 0X64, 0X26, 0X60, 0X0C, 0XCC, 0X33, 0X30, / 0X18, 0XCC, 0X33, 0X18, 0X10, 0XC4, 0X23, 0X08, / 0X10, 0X63, 0XC6, 0X08, 0X10, 0X30, 0X0C, 0X08, / 0X10, 0X18, 0X18, 0X08, 0X10, 0X00, 0X00, 0X08 ; glClear(GL_COLOR_BUFFER_BIT); / 清

6、除颜色缓冲区 glViewport(0, 0, w / 2, h); / 第一个视口,显示第一个三角形 glColor3f(1, 1, 1); / 设置颜色,白色,默认值 makeObject(); / 第一个三角形 glViewport(w / 2, 0, w / 2, h); / 第二个视口,显示第二个三角形 glColor3f(1, 0, 0); / 设置颜色,红色 glEnable(GL_POLYGON_STIPPLE); / 启用多边形点画模式 glPolygonStipple(fly); / 指定多边形点画模式(填充) makeObject(); / 第二个三角形 glDisabl

7、e(GL_POLYGON_STIPPLE); / 关闭多边形点画模式 glFlush(); / 强制OpenGL命令序列在有限的时间内完成执行int main() glutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA); / 设置程序窗口的显示模式(单缓冲区、RGBA颜色模型) glutInitWindowPosition(100, 100); / 程序窗口的位置 glutInitWindowSize(300, 150); / 程序窗口的大小 glutCreateWindow(一个填充多边形的例子!); / 窗口的标题 glutDisplayFunc(disp

8、lay); / 指定场景绘制函数 glutMainLoop(); / 开始循环执行OpenGL命令实验二:基本图元绘制2、 实验目的 了解OpenGL图形软件包绘制图形的基本过程及其程序框架,并在已有的程序框架中添加代码实现直线和圆的生成算法,演示直线和圆的生成过程,从而加深对直线和圆等基本图形生成算法的理解。二、实验内容 实验操作和步骤:本次实验主要的目的是为了掌握基本画线和画圆算法,中点画线算法的步骤是(考虑0m0,则下一点为(xk+1,yk),且Pk+1=Pk+2a; 若pk=0,则下一点为(xk+1,yk+1),且pk+1=pk+(2a+2b).4, 重复步骤3,共b次。中点画圆的算法

9、的步骤是:1,输入圆半径r和圆心(xc,yc),并得到圆心在原点的圆周上的第一点:(x0,y0)=(0,r).2,计算决策参数的初始值:p0=1-r.3,从k=0开始,对每个xk,完成下列检测:若pk=0,则下一点是(Xk+1,Yk-1),且p(k+1)=Pk+2X(k+1)+1-2Y(k+1)其中,2X(k+1)+1=2Xk+1+2,2Y(k+1)=2Yk-24,确定其他七个八分圆中的对称点5,将计算出来的每个像素位置(x,y)变换到待画圆上: X=x+xc,y=y+yc6,重复3-5,直到x=y三、实验结果1-1 中点画线算法演示:1-2 中点画圆算法演示四、源程序中点画线算法程序:/ x

10、tGL.h#pragma once#include #include / 全局变量说明static void(*_xtViewportFunc)(int, int, int, int);/ 指向用户自定义的构建视口和相关变换的函数/ 函数说明int main(int argc, char *argv);void xtMain(int argc, char *argv); / xtGL的入口函数static void xtDefaultInit(); / 默认初始化void xtViewportFunc(void Func(int, int, int, int);/ 指定用户自定义的构建视口和相

11、关变换的函数static void xtDefaultViewport(int x, int y, int w, int h);/ 构建视口和相关变换的默认函数static void xtDefaultReshape(int w, int h); / 默认窗口变化回调函数static void xtDefaultPaint(void); / 默认场景绘制函数static void xtView(GLuint m, GLuint n, int i, int j); / 子区间函数void xtViewInit(int m, int n); / 初始化子区间个数和大小void xtViewBegi

12、n(int i, int j); / 第i行第j列子区间void xtViewEnd(); / 结束子区间内对象定义/ 函数实现int main(int argc, char *argv) xtDefaultInit(); / 默认初始化 xtMain(argc, argv); / xtGL的入口函数 glutMainLoop(); / 开始循环执行OpenGL命令/ 默认初始化static void xtDefaultInit() int scw, sch, w, h; / 屏幕宽度和高度,程序窗口的宽度和高度 glutInitDisplayMode(GLUT_DOUBLE | GLUT_R

13、GBA | GLUT_DEPTH); / 显示模式为:双缓冲区,RGBA颜色模式,使用深度缓冲器 / 只有一次生效,使用该框架只能使用这里规定的显示模式 scw = glutGet(GLUT_SCREEN_WIDTH); / 屏幕宽度 sch = glutGet(GLUT_SCREEN_HEIGHT); / 屏幕高度 h = sch / 2, w = h * 4 / 3; / 程序窗口的高度和宽度 glutInitWindowPosition(scw - w) / 2, (sch - h) / 2); glutInitWindowSize(w, h); / 默认窗口高度为屏幕高度的一半,宽高比为4:3,位于屏幕中央 glutCreateWindow(_argv0); / 窗口的默认标题 glEnable(GL_DEPTH_TEST); / 打开深度测试 xtViewportFunc(xtDefaultViewport); / 构建视口和相关变换的默认函数 glutReshapeFunc(xtDefaultReshape); /

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 其它中学文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号