好文档 - 专业文书写作范文服务资料分享网站

计算机图形学实验报告

天下 分享 时间: 加入收藏 我要投稿 点赞

实验三 反走样及五环的绘制

一、【实验目的】

1.了解走样和反走样的内容,熟练掌握用opengl实现图形的反走样。 2.学会用反走样消除走样现象。 3.学会五环的绘制方法。

二、【实验内容】

1.通过学习反走样相关课程,用opengl实现光栅图形的反走样。 2.绘制五环。

三、【测试数据及其结果】 四、【实验源代码】

反走样:

#include

#pragma comment(linker,\GLuint lineList; //指定显示列表 void Initial() {

glClearColor(1.0f,1.0f,1.0f,0.0f); glLineWidth(12.0f);

glColor4f(0.0,0.6,1.0,1.0);

lineList=glGenLists(1); //获得一个显示列表标识 glNewList(lineList,GL_COMPILE); //定义显示列表 glBegin(GL_LINE_LOOP); glVertex2f(1.0f,1.0f);

glVertex2f(4.0f,2.0f); glVertex2f(2.0f,5.0f); glEnd(); glEndList(); }

void ChangeSize(GLsizei w,GLsizei h) {

if(h==0) h=1;

glViewport(0,0,w,h);

glMatrixMode(GL_PROJECTION); //指定设置投影参数 glLoadIdentity(); if(w<=h)

gluOrtho2D(0.0,5.0,0.0,6.0*(GLfloat)h/(GLfloat)w); else

gluOrtho2D(0.0,5.0*(GLfloat)w/(GLfloat)h,0.0,6.0); glMatrixMode(GL_MODELVIEW); //指定设置模型视图变换参数 glLoadIdentity(); }

void Displayt(void) {

glClear(GL_COLOR_BUFFER_BIT);

glCallList(lineList); //调用显示列表 glFlush(); }

void Displayw(void){

glClear(GL_COLOR_BUFFER_BIT);

glEnable(GL_LINE_SMOOTH); //使用反走样 glEnable(GL_BLEND); //启用混合函数

glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA); //指定混合函数 glCallList(lineList); //调用显示列表 glFlush(); }

void main(void) {

glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB); glutInitWindowSize(300,300); glutCreateWindow(\原始图形\ glutDisplayFunc(Displayt); glutReshapeFunc(ChangeSize); Initial();

glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB); glutInitWindowPosition(300,300);

glutInitWindowSize(300,300); glutCreateWindow(\反走样图形\ glutDisplayFunc(Displayw); glutReshapeFunc(ChangeSize); Initial();

glutMainLoop(); }

五环:

#include #include

#pragma comment(linker,\const float PI=3.1415;

void DrawCircle(GLfloat radius) {

GLfloat x,y,z;

glBegin(GL_LINE_LOOP);

for (int alpha=0;alpha<360;alpha++) {

x=radius*cos(alpha*PI/180); y=radius*sin(alpha*PI/180); z=0;

glVertex3f(x,y,z); }

glEnd(); }

void Display() {

glClearColor(1,1,1,1);

glClear(GL_COLOR_BUFFER_BIT); glLoadIdentity();

glTranslatef(0,0,-25); glColor3f(0,1,0); glLineWidth(3); DrawCircle(3.0); glPopMatrix(); glPushMatrix();

glTranslatef(7,0,0); glColor3f(1,0,0); DrawCircle(3.0); glPopMatrix();

glPushMatrix();

glTranslatef(-7,0,0); glColor3f(0,0,1); DrawCircle(3.0); glPopMatrix(); glPushMatrix();

glTranslatef(-3.5,-3.5,0); glColor3f(0.3,0.5,0.7); DrawCircle(3.0); glPopMatrix(); glPushMatrix();

glTranslatef(3.5,-3.5,0); glColor3f(0.7,0.0,0.3); DrawCircle(3.0); glPopMatrix();

glutSwapBuffers(); }

void reshape(int w,int h) {

glViewport(0,0,w,h);

glMatrixMode(GL_PROJECTION); glLoadIdentity();

gluPerspective(45,GLdouble(w)/h,1,100); glMatrixMode(GL_MODELVIEW); }

void main(int argc,char **argv) {

glutInit(&argc,argv);

glutInitDisplayMode(GLUT_RGBA|GLUT_DOUBLE); glutInitWindowPosition(10,10); glutInitWindowSize(500,500); glutCreateWindow(\ glutDisplayFunc(Display); glutReshapeFunc(reshape); glutMainLoop(); }

实验四 多视区

一、【实验目的】

1.熟练掌握各种裁剪算法和二维观察变换。

2.学会在屏幕坐标系下创建多个视区、指定视区的宽度和高度,了解二维观察变换中包含窗口到视区的映射。

二、【实验内容】

1.在一个显示窗口内指定多个视区,分别显示具有相同坐标、不同颜色和不同显示模式的各种图形面。

2.在书本给定程序基础上,对程序做一些改变并在视区中绘制各种图形。

三、【测试数据及其结果】 四、【实验源代码】

#include #include

const float PI=3.1415; void initial(void) {

glClearColor(1.0,1.0,1.0,1.0); glMatrixMode(GL_PROJECTION); glLoadIdentity();

gluOrtho2D(-10.0,10.0,-10.0,10.0); }

void triangle(GLsizei mode) {

计算机图形学实验报告

实验三反走样及五环的绘制一、【实验目的】1.了解走样和反走样的内容,熟练掌握用opengl实现图形的反走样。2.学会用反走样消除走样现象。3.学会五环的绘制方法。二、【实验内容】1.通过学习反走样相关课程,用opengl实现光栅图形的反走样。2.绘制五环。三、【测试数据及其结果】四、【实验源代码】<
推荐度:
点击下载文档文档为doc格式
0v2d25pfzc5o77k30e8m0fvqu4yw2700pbd
领取福利

微信扫码领取福利

微信扫码分享