基于OpenGL的3D旋转魔方,包括工程和源代码
学生作品,希望各位多多关照
代码片段和文件信息
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 149072 2013-12-08 21:16 glut.zip
文件 112 2013-12-08 23:23 若程序无法运行请打开.txt
目录 0 2013-12-10 22:34 魔方
文件 3461 2013-12-09 21:31 魔方mofang.c
文件 3461 2013-12-09 20:20 魔方mofang.dsp
文件 520 2013-12-09 20:20 魔方mofang.dsw
文件 241734 2013-12-09 21:31 魔方mofang.exe
文件 41984 2013-12-09 21:33 魔方mofang.ncb
文件 48640 2013-12-09 21:33 魔方mofang.opt
文件 1196 2013-12-09 21:31 魔方mofang.plg
目录 0 2013-12-10 22:32 魔方pic
文件 196662 2010-05-26 20:29 魔方pic1.bmp
文件 196662 2010-05-28 11:48 魔方pic11.bmp
文件 196662 2010-05-28 11:35 魔方pic12.bmp
文件 196664 2000-03-06 02:10 魔方pic13.bmp
文件 196662 2010-05-27 11:49 魔方pic2.bmp
文件 196662 2010-05-27 22:38 魔方pic3.bmp
文件 196662 2013-12-09 21:29 魔方pic4.bmp
文件 196662 2013-12-09 21:28 魔方pic5.bmp
文件 196662 2013-12-09 21:30 魔方pic6.bmp
文件 15293996 2013-12-09 20:46 魔方picmusic.wav
文件 4218 2013-12-09 19:45 魔方 exture.c
文件 4762 2013-11-26 10:33 魔方 ransform.c
#include “GL/glut.h“
#include “stdio.h“
#include
#include
#pragma comment(lib “WINMM.LIB“)
#include “transform.c“
#include “texture.c“
/* *这是一个用极坐标指定的视图变换函数
*例如但需要视野围绕原点的物体作轨道运动时可以调用该函数
*distance定义轨道半径
azimuth定义视野在xy平面上旋转的角度
elevation定义视野在yz平面上旋转的角度
twist定义视镜体围绕视野的旋转角度
*/
void polarView(GLdouble distanceGLdouble twist
GLdouble elevationGLdouble azimuth)
{
glTranslated(0.00.0-distance);
glRotated(-twist0.00.01.0);
glRotated(-elevation1.00.00.0);
glRotated(azimuth0.00.01.0);
}
/*初始化各个立方体*/
void initCubes(){
GLfloat xyz;
int ijkt;
for(i=0x=-1.0;i<3;i++x+=1.0){
for(j=0y=-1.0;j<3;j++y+=1.0){
for(k=0z=-1.0;k<3;k++z+=1.0){
cubes[i][j][k].x=x;cubes[i][j][k].sx=0;
cubes[i][j][k].y=y;cubes[i][j][k].sy=0;
cubes[i][j][k].z=z;cubes[i][j][k].sz=0;
for(t=0;t>MAXORDER;t++){
cubes[i][j][k].orders[t] = 0;
}
}
}
}
}
void drawCube(){
int ijkt;
for(i=0;i<3;i++){
for(j=0;j<3;j++){
for(k=0;k<3;k++){
glPushMatrix();
glRotatef(cubes[i][j][k].sx 1.0 0.0 0.0);
glRotatef(cubes[i][j][k].sz 0.0 0.0 1.0);
glRotatef(cubes[i][j][k].sy 0.0 1.0 0.0);
for(t=MAXORDER-1;t>-1;t--){
switch(cubes[i][j][k].orders[t]){
case ‘x‘:
glRotatef(90.0 1.0 0.0 0.0);
break;
case ‘y‘:
glRotatef(90.0 0.0 1.0 0.0);
break;
case ‘z‘:
glRotatef(90.0 0.0 0.0 1.0);
break;
}
}
glTranslatef(cubes[i][j][k].xcubes[i][j][k].ycubes[i][j][k].z);
cube(ijk);
glPopMatrix();
}
}
}
}
/*绘制场景*/
void display(void){
InitGL();
glEnable(GL_TEXTURE_2D); // Enable Texture Mapping ( NEW ) */
glShadeModel(GL_SMOOTH); // Enable Smooth Shading
glClearDepth(1.0f); // Depth Buffer Setup
glEnable(GL_DEPTH_TEST); // Enables Depth Testing
glDepthFunc(GL_LEQUAL); // The Type Of Depth Testing To Do
glHint(GL_PERSPECTIVE_CORRECTION_HINT GL_NICEST); // Really Nice Perspective Calculationsculations
glClearColor(0.00.00.00.0);
glClear(GL_COLOR_BUFFER_BIT| GL_DEPTH_BUFFER_BIT);
glPushMatrix();
polarView(9.00.0yzxy);
drawCube();
glPopMatrix();
glutSwapBuffers();
}
/*当窗口被改变时的处理方法*/
void reshape(int widthint height){
//设置适口大小和位置,保证魔方不变形
GLint side = width>height? height:width;
GLint pos = (width-side)/2;
glViewport(pos0(GLsizei)side(GLsizei)side);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(50.01.01.015.0);
}
void init(){
initCubes();
}
/*主函数
初始化
设定显示模式双缓冲RGB
初始化窗口大小位置
注册事件函数
显示窗口
*/
main(int argcchar **argv){
glutInit(&argcargv);
glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGB| GLUT_DEPTH);
glutInitWindowSize(800600);
glutInitWindowPos
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 149072 2013-12-08 21:16 glut.zip
文件 112 2013-12-08 23:23 若程序无法运行请打开.txt
目录 0 2013-12-10 22:34 魔方
文件 3461 2013-12-09 21:31 魔方mofang.c
文件 3461 2013-12-09 20:20 魔方mofang.dsp
文件 520 2013-12-09 20:20 魔方mofang.dsw
文件 241734 2013-12-09 21:31 魔方mofang.exe
文件 41984 2013-12-09 21:33 魔方mofang.ncb
文件 48640 2013-12-09 21:33 魔方mofang.opt
文件 1196 2013-12-09 21:31 魔方mofang.plg
目录 0 2013-12-10 22:32 魔方pic
文件 196662 2010-05-26 20:29 魔方pic1.bmp
文件 196662 2010-05-28 11:48 魔方pic11.bmp
文件 196662 2010-05-28 11:35 魔方pic12.bmp
文件 196664 2000-03-06 02:10 魔方pic13.bmp
文件 196662 2010-05-27 11:49 魔方pic2.bmp
文件 196662 2010-05-27 22:38 魔方pic3.bmp
文件 196662 2013-12-09 21:29 魔方pic4.bmp
文件 196662 2013-12-09 21:28 魔方pic5.bmp
文件 196662 2013-12-09 21:30 魔方pic6.bmp
文件 15293996 2013-12-09 20:46 魔方picmusic.wav
文件 4218 2013-12-09 19:45 魔方 exture.c
文件 4762 2013-11-26 10:33 魔方 ransform.c
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。
评论列表(条)