计算机图形学OpenGL实验一.doc
- 文档编号:340474
- 上传时间:2022-10-09
- 格式:DOC
- 页数:4
- 大小:298.50KB
计算机图形学OpenGL实验一.doc
《计算机图形学OpenGL实验一.doc》由会员分享,可在线阅读,更多相关《计算机图形学OpenGL实验一.doc(4页珍藏版)》请在冰豆网上搜索。
实验报告
学院(系)名称:
\
姓名
学号
专业
班级
实验项目
实验一:
绘制基本图形
课程名称
计算机图形学
课程代码
实验时间
实验地点
批改意见
成绩
教师签字:
一、实验目的
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;
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 图形学 OpenGL 实验