计算机图形学实验报告Word文档格式.docx

上传人:b****3 文档编号:14014934 上传时间:2022-10-16 格式:DOCX 页数:42 大小:122KB
下载 相关 举报
计算机图形学实验报告Word文档格式.docx_第1页
第1页 / 共42页
计算机图形学实验报告Word文档格式.docx_第2页
第2页 / 共42页
计算机图形学实验报告Word文档格式.docx_第3页
第3页 / 共42页
计算机图形学实验报告Word文档格式.docx_第4页
第4页 / 共42页
计算机图形学实验报告Word文档格式.docx_第5页
第5页 / 共42页
点击查看更多>>
下载资源
资源描述

计算机图形学实验报告Word文档格式.docx

《计算机图形学实验报告Word文档格式.docx》由会员分享,可在线阅读,更多相关《计算机图形学实验报告Word文档格式.docx(42页珍藏版)》请在冰豆网上搜索。

计算机图形学实验报告Word文档格式.docx

最底层为图形硬件,第二层为操作系统,第三层为窗口系统,第四层为OpenGL,最上面的层为应用软件;

OpenGL命令将被放在一个命令缓冲区中,这样命令缓冲区中包含了大量的命令、顶点数据和纹理数据。

当缓冲区被清空时,缓冲区中的命令和数据都将传递给流水线的下一个阶段。

OpenGL的基本语法中相关库有:

OpenGL核心库:

gl、OpenGL实用程序库:

glu、OpenG编程辅助库:

aux、OpenGL实用程序工具包(OpenGLutilitytoolkit,GLUT):

glut、Windows专用库:

wgl。

OpenGL的基本语法中命名规则为:

OpenGL函数都遵循一个命名约定,即采用以下格式:

<

库前缀>

<

根命令>

可选的参数个数>

可选的参数类型>

了解了上述基础知识后,配置好OpenGL环境,然后在该环境中编程练习图形的绘制,本次实验主要是对点的绘制、直线的绘制和多边形面的绘制。

3.实验代码及结果

3.1点的绘制:

#include<

gl/glut.h>

voidInitial(void)

{

glClearColor(1.0f,1.0f,1.0f,1.0f);

//设置窗口背景颜色为白色

glMatrixMode(GL_PROJECTION);

//指定设置投影参数

gluOrtho2D(0.0,200.0,0.0,150.0);

//设置投影参数

}

voidDisplay(void)

glClear(GL_COLOR_BUFFER_BIT);

//用当前背景颜色填充窗口

glColor3f(1.0f,0.0f,0.0f);

//设置当前的绘图颜色为红

//glRectf(50.0f,100.0f,150.0f,50.0f);

//绘制一个矩形

glPointSize(10);

//三个点

glBegin(GL_POINTS);

glVertex2i(2,148);

glVertex2i(100,75);

glVertex2i(198,2);

glEnd();

glFlush();

//清空OpenGL命令缓冲区,执行OpenGL程序

intmain(intargc,char*argv[])

glutInit(&

argc,argv);

glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);

glutInitWindowSize(400,300);

glutInitWindowPosition(100,120);

glutCreateWindow("

矩形"

);

glutDisplayFunc(Display);

//初始化窗口的显示模式

//设置窗口的尺寸

//设置窗口位置

//创建一个名为矩形的窗口

//设置当前窗口的显示回调函数

//完成窗口初始化

Initial();

return0;

运行结果:

3.2直线的绘制:

#include<

voidInitial(void)

〃设置投影参数

//用当前背景颜色填充窗口

//设置当前的绘图颜色为红色

glBegin(GL_LINE_LOOP);

//五角星

glVertex2i(10,10);

glVertex2i(30,35);

glVertex2i(50,10);

glVertex2i(5,25);

glVertex2i(55,25);

//清空

glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);

glutInitWindowSize(400,300);

OpenGL命令缓冲区,执行OpenGL程序

3.3多边形面的绘制:

glutMainLoop();

//完成窗口GLUT事件处理循环

 

glBegin(GL_TRIANGLES);

//等边三角形

glVertex2f(0.0,0.0);

glVertex2f(15,25.95);

glVertex2f(30,0);

//清空OpenGL命令缓冲区,执行OpenGL程序

■睡1

X

实验二直线绘制实验

1.实验目的

为了进一步熟悉OpenGL编程,了解基本图形生成算法中的直线绘制,学会直线绘制

算法中最常用的三种算法:

数值微分法、中点画线算法和Bresenham算法。

2.实验内容

(一)数值微分法

P0(X0,Y0)和

数值微分法直接从直线的微分方程生成直线。

给定直线的两端点:

P1(X1,Y1),得到直线的微分方程dy/dx=△y/△x=(Y1-Y0)/(X1-X0)=k

数值微分算法的原理是,由于直线的一阶导数是连续的,而且△x和是成比例的,因

此通过在当前位置(Xi,Yi)分别加上两个小增量x和&

△(&

为无穷小的正数)来求下一点(X(i+1),Y(i+1))的x,y坐标。

(二)中点画线算法

给定直线的两端点:

P0(X0,Y0)和P1(X1,Y1),可得到直线方程F(x,y)=y-kx-b=0且k=

△△x=(Y1-Y0)/(X1-X0)。

绘图过程如下:

0输入直线的两端点PO(XO,YO)和P1(X1,Y1)。

©

计算初始值△x,A(,d=&

-2△/,x=XO,y=YO.

◎绘制点(x,y)。

判断d的符号,若d<

0,则(x,y)更新为(x+1,y+1),d更新为d+2Zx-2△/;

否则(x,y)更新为(x+1,y),d更新为Ay。

04.当直线没有画完时,重复步骤03,否则结束。

三)Bresenham算法

算法步骤如下:

01.输入直线两端点P0(X0,Y0)和P1(X1,Y1)。

◎计算初始值△x,^/,e=-△c,x=X0,y=Y0。

03.绘制点(x,y)。

0e更新为e+2△判断e的符号,若e>

0,则(x,y)更新为(x+1,y+1),同样将e更新为e-2

△<

;

否则(x,y)更新为(x+1,y)o

05.当直线没有画完时,重复步骤03和04;

否则结束。

3.实验代码及结果

3.1数值微分算法编程绘制直线代码:

windows.h>

//设置窗口背景颜色为白色glMatrixMode(GL_PROJECTION);

//指定设置投影参数gluOrtho2D(0.0,200.0,0.0,150.0);

glBegin(GL_LINES);

intx0=10;

inty0=20;

intx1=30;

inty1=40;

intcolor=10;

intdx,dy,epsl,k;

floatx,y,xIncre,yIncre;

dx=x1-x0;

dy=y1-y0;

x=x0;

y=y0;

//

if(abs(dx)>

abs(dy))

epsl=abs(dx);

elseepsl=abs(dy);

xIncre=(float)dx/(float)epsl;

yIncre=(float)dy/(float)epsl;

for(k=0;

k<

=epsl;

k++)

glVertex2i(int(x+0.5),(int)(y+0.5));

x+=xIncre;

y+=yIncre;

intmain(intargc,char

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 外语学习 > 韩语学习

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1