计算机图形学OpenGL实验一.doc

上传人:b****2 文档编号:340474 上传时间:2022-10-09 格式:DOC 页数:4 大小:298.50KB
下载 相关 举报
计算机图形学OpenGL实验一.doc_第1页
第1页 / 共4页
计算机图形学OpenGL实验一.doc_第2页
第2页 / 共4页
计算机图形学OpenGL实验一.doc_第3页
第3页 / 共4页
计算机图形学OpenGL实验一.doc_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

计算机图形学OpenGL实验一.doc

《计算机图形学OpenGL实验一.doc》由会员分享,可在线阅读,更多相关《计算机图形学OpenGL实验一.doc(4页珍藏版)》请在冰豆网上搜索。

计算机图形学OpenGL实验一.doc

实验报告

学院(系)名称:

\

姓名

学号

专业

班级

实验项目

实验一:

绘制基本图形

课程名称

计算机图形学

课程代码

实验时间

实验地点

批改意见

成绩

教师签字:

一、实验目的

1.理解图形元素显示的基本原理,掌握扫描转换直线段的常用算法原理,扫描转换圆弧的常用算法原理。

2.熟悉glut常用几个功能函数

3.熟悉glut的函数回调机制

4.掌握绘制不同大小和颜色的点的方法

5.掌握绘制不同线型和颜色的直线的方法(直线,折线,环线)

6.掌握绘制彩色多边形边框的方法(各种设备)

7.熟悉OpenGL的编程环境(OpenGL+GlUT/SDK/MFC+C++)

二、实验内容

1.绘制框架流程。

2.分别实现港口起重机、工程车、等设备的绘制。

3.颜色的设置要合适,且易于更换。

#include

#include

intSCREEN_HEIGHT=480;//屏幕高度

//跟踪鼠标点击次数,达到3次后绘制Bezier曲线

intNUMPOINTS=0;

//点

classPoint{

public:

floatx,y;

voidsetxy(floatx2,floaty2){x=x2;y=y2;}

constPoint&operator=(constPoint&rPoint){

x=rPoint.x;

y=rPoint.y;

return*this;

}

};

Pointabc[3];

voidmyInit(){

glClearColor(0.0,0.0,0.0,0.0);

glColor3f(1.0,0.0,0.0);

glPointSize(4.0);

glMatrixMode(GL_PROJECTION);

glLoadIdentity();

gluOrtho2D(0.0,640.0,0.0,480.0);

}

voiddrawDot(intx,inty){

glBegin(GL_POINTS);

glVertex2i(x,y);

glEnd();

glFlush();

}

voiddrawLine(Pointp1,Pointp2){

glBegin(GL_LINES);

glVertex2f(p1.x,p1.y);

glVertex2f(p2.x,p2.y);

glEnd();

glFlush();

}

//计算下一个Bezier曲线上的点

PointdrawBezier(PointA,PointB,PointC,doublet){

PointP;

P.x=pow((1-t),2)*A.x+2*t*(1-t)*B.x+pow(t,2)*C.x;

P.y=pow((1-t),2)*A.y+2*t*(1-t)*B.y+pow(t,2)*C.y;

returnP;

}

voidmyMouse(intbutton,intstate,intx,inty){

//左键按下

if(button==GLUT_LEFT_BUTTON&&state==GLUT_DOWN){

//存储鼠标点击的点

abc[NUMPOINTS].setxy((float)x,(float)(SCREEN_HEIGHT-y));

NUMPOINTS++;

//绘制红点

drawDot(x,SCREEN_HEIGHT-y);

//绘制Bezier曲线

if(NUMPOINTS==3){

glColor3f(1.0,1.0,1.0);

//绘制控制多边形

drawLine(abc[0],abc[1]);

drawLine(abc[1],abc[2]);

PointPOld=abc[0];

//绘制Bezier曲线段,控制t的增量可以控制曲线精度

for(doublet=0.0;t<=1.0;t+=0.1){

PointP=drawBezier(abc[0],abc[1],abc[2],t);

drawLine(POld,P);

POld=P;

}

glColor3f(1.0,0.0,0.0);

NUMPOINTS=0;

}

}

}

voidmyDisplay(){

glClear(GL_COLOR_BUFFER_BIT);

glFlush();

}

intmain(intargc,char*argv[]){

glutInit(&argc,argv);

glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);

glutInitWindowSize(640,480);

glutInitWindowPosition(100,150);

glutCreateWindow("BezierCurve");

glutMouseFunc(myMouse);

glutDisplayFunc(myDisplay);

myInit();

glutMainLoop();

return0;

}

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

当前位置:首页 > 考试认证 > IT认证

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

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