- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于OpenGL的字母图形的创建—Pp
摘 要:此次课程设计我基于OpenGL创建了大写字母P和小写字母p的三维图形。在美式键盘大写未锁定条件下,运行程序时,可以实现图形的自转、手控绕X,Y,Z轴旋转、放大、缩小和左、右平移。程序还添加了材质,光源和光照的设置,并且在运行结束后有解说。
关键词:OpenGL;三维建模;键盘响应
设计目的
第一,通过实践进一步领会程序设计的特点和应用,提高运用OpenGL的能力。
第二,通过实践加强对计算机图形学课程知识点的理解和掌握,培养对课程知识综合运用能力、实际分析问题能力及编程能力,养成良好的编程习惯。
第三,通过使用OpenGL进行图形的创建,切实提高面向对象的建模能力,为后续的相关课程的学习打下基础。
2 功能描述
运行程序,窗口大小为800*800。
程序运行,图形会绕X,Y,Z轴循环地自转。
在美式键盘大写未锁定条件下,点击a键,Pp图形会放大。
在美式键盘大写未锁定条件下,点击s键,Pp图形会缩小。
在美式键盘大写未锁定条件下,点击d键,Pp图形会向左移动。
在美式键盘大写未锁定条件下,点击f键,Pp图形会向右移动。
分别点击↑键 、↓键,Pp图形会分别绕x轴顺时针旋转和逆时针旋转。
分别点击← 键、→键,Pp图形会分别绕y轴顺时针旋转和逆时针旋转。
分别点击PageUp键、PageDown键,Pp图形会分别绕z轴顺时针旋转和逆时针旋转。
背景颜色为天蓝色,设置了材质,光源和光照。
图形的整体形状不会因为窗口比例的改变而影响,并且图像总是出现在窗口的中心。
关闭图形界面时,程序框里会出现提示。
图形界面的标题处会提示使用方法。
3 主要知识点控件的消息响应.1 初始化材质属性,光源属性,光照模型
void init()
{
glClearColor(0.0,0.5,0.9,1.0);//指定背景颜色为天蓝色
glShadeModel(GL_SMOOTH);//指定明暗度模型
//指定材质参数
GLfloat mat_specular[]={1.0,1.0,0.0,1.0};
GLfloat mat_shininess[]={50.0};
glMaterialfv(GL_FRONT,GL_SPECULAR,mat_specular);//镜面
glMaterialfv(GL_FRONT,GL_SHININESS,mat_shininess);//发亮
//指定光源属性
GLfloat light_position[]={1.0,0.0,1.0,0.0};//光源位置
GLfloat light_ambient[]={0.0,1.0,1.0,1.0};//环境光参数
GLfloat light_diffuse[]={1.0,1.0,0.0,1.0};//漫射光参数
GLfloat light_specular[]={1.0,1.0,0.0,1.0};//镜面反射光参数
glLightfv(GL_LIGHT0,GL_POSITION,light_position);//位置
glLightfv(GL_LIGHT0,GL_AMBIENT,light_ambient);//环境光
glLightfv(GL_LIGHT0,GL_DIFFUSE,light_diffuse);//漫反射
glLightfv(GL_LIGHT0,GL_SPECULAR,light_specular);//镜面反射
//启动光源
glEnable(GL_LIGHTING);
glEnable(GL_LIGHT0);//启用0号光源
glEnable(GL_DEPTH_TEST);
}
4.2 构建P和p的图形,并且实现图形的自转
void Pp(GLfloat x1, GLfloat y1, GLfloat z1, GLfloat x2, GLfloat y2, GLfloat z2)
{
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(0.0f,0.0f,0.5f);
float i=0;
glPushMatrix();
glRotatef(xRot, 1.0f, 0.0f, 0.0f);//上下旋转以x轴为旋转中心
glRotatef(yRot, 0.0f, 1.0f, 0.0f);//左右旋转以y轴为旋转中心
glRotatef(zRot, 0.0f, 0.0f, 1.0f);//上下旋转以Z轴为旋转中心
/*让图形同时沿着X,Y,Z轴循环地自转*/
yRot+=0.06;
if(yRot360.0)
yRot-=360.0;
xRot+=0.0
文档评论(0)