基于OpenGL的3D旋转魔方的实现

华中科技大学电子科学与技术系

课程设计报告

( 20-- 2012年度第 学期)

名 称:软件课程设计

题 目:

院 系:

班 级:

学 号:

学生姓名:

指导教师:

设计周数:

成 绩:

日期: 年 月 日

目 录

1.课程设计介绍……………………………………………………………… 1

1.1.内容……………………………………………………………………… 1

1.2.目的 ………………………………………………………………………1

1.3.取得的成果 ……………………………………………………………… 1

2.程序分析 …………………………………………………… ……………2

2.1. 程序原理………………………………………………………………… 2

2.1. 程序流程………………………………………………………………… 3

2.3. 数据结构………………………………………………………………… 8

2.4. 重要函数用法分析 ……………………………………………………… 8

3.结果演示与程序分析 …………………………………………………… 9

3.1. 成果演示………………………………………………………………… 9

3.2. 程序分析 ……………………………………………………………… 11

4.编程中遇到的问题…………………………………………………………12

5.课程设计小结………………………………………………………………13

参考文献………………………………………………………………………14

基于OpenGL的3D旋转魔方实现

课程设计介绍

目的

当今计算机技术流行,引领了各行各业。而程序是计算机的灵魂,因此编程能力对当今的学生而言至关重要。虽然我们在前期已经学习了C语言,但是还只对程序有一些简单的认识,说实话,是很浅显的认识。通过本软件课程设计的学习,可以从整体上对软件工程和项目有全面的认识。通过此次课程设计,可以锻炼编程能力,激发对编程的兴趣,同时也能培养良好的编程习惯。这对于个人今后的学习,今后的工作乃至今后的生活都会产生重要的影响。对于国家而言,极大的推动了计算机普及教育,提高了大学生的计算机使用水平,具有重大的意义。

内容

通过此次项目掌握软件开发模式,模块化结构分析以及程序设计流程

学会使用VC++6.0进行编程

掌握有关程序设计的思想,数据结构的知识,掌握C语言算法,掌握OpenGL编程知识如贴图与键盘控制

掌握win32编程知识,了解windows程序内部运行机制

初步培养需求分析、软件测试、调试的能力

在2X2魔方的基础上,尝试编写3X3的魔方,并实现其旋转

取得的成果

在理解Magic2D例子程序的基础上,借助了Win32平台进行了一系列调试和学习。在此次项目中,学习了Visual C++6.0软件开发环境,熟练掌握了Win32 Application开发流程。同时也学习了OpenGL的基本知识,掌握了一些OpenGL的重要技术与重要函数的使用,编写了一些简单的OpenGL程序。参考Magic2D例子流程,我对原程序进行了比较大的修改,并换上了自己的图片,实现了一个立方体贴六张不同的图片,并编写出了自己的2X2魔方程序。根据相似度分析,成功的编写出了3X3旋转魔方,并自己设计了算法,实现了各个层面的转动,转动效果很完美。同时,为了增加程序的娱乐效果,我加入了歌曲最炫民族风,虽然很简单,不过感觉非常实用且有趣。

程序分析

2.1 程序原理

(1)OpenGL

OpenGL是一个开放的三维图形软件包,它独立于窗口系统和操作系统,以它为基础开发的应用程序可以十分方便地在各种平台间移植;OpenGL可以与Visual C++紧密接口,便于实现机械手的有关计算和图形算法,可保证算法的正确性和可靠性;OpenGL使用简便,效率高。OpenGL(Open Graphics Library)函数库,绘制魔方并实现魔方的绘制、随机旋转、贴图以及键盘控制等功能。采用基本图形的绘图函数及定位函数,添加相应纹理来实现魔方模型的绘制。通过读取载入BMP文件,应用纹理贴图技术来完成对魔方旋转面的处理。

(2)模型的旋转

首先对立方体进行建模。一个立方体由8个点组成,8个点组成6个面片,对立方体的几何操作本质上就是对这6个平面的操作(绘制、纹理、旋转和平移等)。点的索引号确定后,每个面片也就确定了,如{0,1,2,3}四个点构成Z向正投影面。

立方体在空间的旋转,归根到底是其顶点的旋转,如空间点(

opengl魔方文档_基于OpenGL的3D旋转魔方的实现.doc相关推荐

  1. vue-video-player文档_基于vue-video-player自定义播放器的方法

    基于vue-video-player自定义播放器的方法 发布时间:2019-01-07 发布网站:编程之家 编程之家收集整理的这篇文章主要介绍了基于vue-video-player自定义播放器的方法, ...

  2. java拼图游戏设计文档_基于JAVA的拼图游戏的设计与实现(含录像)

    基于JAVA的拼图游戏的设计与实现(含录像)(任务书,开题报告,中期检查表,外文翻译,毕业论文15500字,程序代码,答辩PPT,答辩视频录像) 摘  要 在我们日常生活中,有很多的益智类游戏,如七巧 ...

  3. python如何创建txt文档_基于python实现生成指定大小txt文档

    前言 在测试过程中经常遇到文件上传的功能,文件的大小边界值测试一直没有好的解决办法,这里我分享一个创建文件的脚本希望对大家有帮助. demo """ * Create b ...

  4. keycloak中文使用文档_基于DOCKER安装配置keycloak

    Keycloak基于OAuth 2.0.Open ID Connect.JSON Web Token(JWT)和SAML 2.0规范,为浏览器应用和RESTful Web Service提供SSO和I ...

  5. 计算机网络校园局域网课题,毕业论文基于VLAN技术的校园局域网建设word文档_全文免费在线阅读(推荐阅读)...

    <[毕业论文]基于VLAN技术的校园局域网建设.doc>由会员分享,可免费在线阅读全文,更多与<[毕业论文]基于VLAN技术的校园局域网建设(word文档)_全文免费在线阅读> ...

  6. java api文档_细说API – 文档和前后端协作

    在上一篇文章--<细说API – 重新认识RESTful>中介绍了如何理解和设计RESTful风格的API,现在我们来聊聊如何有效的呈现API文档,以及前后端协作的方式. 我经历过一些没有 ...

  7. api数据接口文档_接口文档示例(Taobao/jd/pinduoduo/开放接口调用)

    api数据接口文档_接口文档示例 本文主要是提供了一个接口文档的范文,内容修订历史.目录.时序图.接口要素描述.接口说明.使用示例.字典.FAQ.  使用MD格式文档(makedown),选择原因,容 ...

  8. mysql数据库更改文档_更改MySQL数据库目录位置

    更改MySQL数据库目录位置 MySQL默认的数据文档存储目录为/var/lib/mysql.假如要把MySQL目录移到/home/data下需要进行下面几步: 1.home目录下建立data目录 c ...

  9. python怎么查找word文档_教你怎么使用Python对word文档进行操作

    使用Python对word文档进行操作 一.安装Python-docx Python-docx是专门针对于word文档的一个模块,只能读取docx 不能读取doc文件.说白了,python就相当于wi ...

  10. java 显示word文档_如何通过apache POI技术来读取Word文档,并把Word文档的原来格式完整地显示在html网页?...

    我把代码发到你的邮箱. package com.my.util; import java.io.BufferedWriter; import java.io.File; import java.io. ...

最新文章

  1. 新手篇——学习网页开发需要多长时间就能找到工作
  2. logging日志配置,day95下午
  3. CSS中overflow:scroll怎么设置只上下滚动而不左右滚动
  4. 理解Promise (4)
  5. BZOJ 3277 串 BZOJ 3473 字符串 (广义后缀自动机、时间复杂度分析、启发式合并、线段树合并、主席树)...
  6. 小红帽linux操作教程_【免费】Linux从入门到精通教程!
  7. mongoDB分页的两种方法
  8. 【NLP专栏】图解 BERT 预训练模型!
  9. Global.asax取绝对路径
  10. 推荐一款焦点图jQuery插件 SlidesJs
  11. Android手机车牌识别OCR
  12. python3用turtle模块画一棵随机樱花树
  13. 计算机炫酷功能,【实用】上班族必备!10个实用电脑炫酷小技巧~
  14. autoCAD恐吓式销售_恐吓式软文的例子 恐吓式软文营销案例分享
  15. HTTP response codes
  16. 江苏省赛 JSCPC2018 K. 2018
  17. 天干地支计算公式_天干地支计算方法
  18. 如何快速实现数组/字符串的逆序(用reverse函数实现)
  19. python基础知识之整除、取余、幂运算
  20. python/gdal处理遥感影像(读取、投影转换、裁剪、建立图像金字塔等)

热门文章

  1. 【读书笔记】面试为什么总考算法_如何避开算法面试
  2. 转载 Camera Link接口
  3. php在线解密,zend在线解密
  4. 数字信号音频采集及时域频域加噪设计滤波器处理项目入门
  5. C语言课程设计报告-菜单设计
  6. ug建模减速器_UG NX一级减速器整体建模
  7. 谷歌绝不会退出中国市场
  8. python for maya教程_Python for Maya 教程 – Artist Friendly Programming
  9. 浏览器flash/html5视频播放如何倍速(Enounce MySpeed)
  10. VMware虚拟机中激活Windows Server 2008的具体步骤