资源简介
OpenGL实现的3D魔方,按方向键可以旋转,按F1-F9可以拧动魔方。

代码片段和文件信息
#include
#include
#include
#include
//小方块的结构,包括小方块在xyz上的旋转角度,颜色数组下标,小方块的三维坐标。
struct rcube{
int xr;
int yr;
int zr;
int cl[6];
GLfloat x;
GLfloat y;
GLfloat z;
};
struct rcube rc[3][3][3];
struct rcube *temp[3][3];
//颜色数组
GLfloat color[6][3]={{1.00.00.0}{0.01.00.0}{0.00.01.0}
{1.01.00.0}{1.00.01.0}{0.01.01.0}};
int tempc[3][3][6];
//有关旋转的一些变量
GLfloat xRot = 10.0f;
GLfloat yRot = 10.0f;
int rotateType=0;
int rotateOK=0;
int rotateRate=50;
int rotate=0;
///////////////////////////////////////////////////////////////////////////////
//画小方块
void drawcube(int cl[6])
{
glBegin(GL_QUADS);
//右面
glColor3fv(color[cl[0]]);
glVertex3f(0.14f-0.14f-0.14f);
glVertex3f(0.14f0.14f-0.14f);
glVertex3f(0.14f0.14f0.14f);
glVertex3f(0.14f-0.14f0.14f);
//左面
glColor3fv(color[cl[1]]);
glVertex3f(-0.14f-0.14f0.14f);
glVertex3f(-0.14f0.14f0.14f);
glVertex3f(-0.14f0.14f-0.14f);
glVertex3f(-0.14f-0.14f-0.14f);
//前面
glColor3fv(color[cl[2]]);
glVertex3f(-0.14f0.14f0.14f);
glVertex3f(-0.14f-0.14f0.14f);
glVertex3f(0.14f-0.14f0.14f);
glVertex3f(0.14f0.14f0.14f);
//后面
glColor3fv(color[cl[3]]);
glVertex3f(-0.14f0.14f-0.14f);
glVertex3f(0.14f0.14f-0.14f);
glVertex3f(0.14f-0.14f-0.14f);
glVertex3f(-0.14f-0.14f-0.14f);
//上面
glColor3fv(color[cl[4]]);
glVertex3f(-0.14f0.14f-0.14f);
glVertex3f(-0.14f0.14f0.14f);
glVertex3f(0.14f0.14f0.14f);
glVertex3f(0.14f0.14f-0.14f);
//下面
glColor3fv(color[cl[5]]);
glVertex3f(-0.14f-0.14f-0.14f);
glVertex3f(0.14f-0.14f-0.14f);
glVertex3f(0.14f-0.14f0.14f);
glVertex3f(-0.14f-0.14f0.14f);
glEnd();
glFlush();
}
//窗口刷新时被调用。
void RenderScene(void)
{
int ijk;
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glPushMatrix();
glRotatef(xRot 1.0f 0.0f 0.0f);
glRotatef(yRot 0.0f 1.0f 0.0f);
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
for(k=0;k<3;k++)
{
//魔方在这显示
glPushMatrix();
glRotatef(rc[i][j][k].xr 1.0f 0.0f 0.0f);
glRotatef(rc[i][j][k].zr 0.0f 0.0f 1.0f);
glRotatef(rc[i][j][k].yr 0.0f 1.0f 0.0f);
glTranslatef(rc[i][j][k].xrc[i][j][k].yrc[i][j][k].z);
drawcube(rc[i][j][k].cl);
glPopMatrix();
}
}
}
glPopMatrix();
glutSwapBuffers();
}
//初始化。
void SetupRC()
{
GLfloat xyz;
int ijkl;
for(i=0x=-0.3f;i<3;i++x+=0.3f)
{
for(j=0y=-0.3f;j<3;j++y+=0.3f)
{
for(k=0z=-0.3f;k<3;k++z+=0.3f)
{
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 3972 2012-12-12 16:27 MagicCube\MagicCube\MagicCube.vcproj
文件 1419 2012-12-12 16:27 MagicCube\MagicCube\MagicCube.vcproj.JS-QINLETAO.qinletao.user
文件 9431 2012-12-12 16:27 MagicCube\MagicCube\main.cpp
文件 27648 2012-12-12 16:27 MagicCube\MagicCube.ncb
文件 892 2012-12-12 16:26 MagicCube\MagicCube.sln
..A..H. 9216 2012-12-12 16:27 MagicCube\MagicCube.suo
目录 0 2012-12-12 16:27 MagicCube\MagicCube
目录 0 2012-12-12 16:26 MagicCube
----------- --------- ---------- ----- ----
52578 8
相关资源
- OSG 72集视频教程和资料140620
- labview魔方程序
- OpenGL参考手册
- The Secret Path 3D 3D魔方迷宫[源码][scra
-
Actionsc
ript 1.0实现能跟随鼠标运动的 - Qt Creator opengl实现四元数鼠标控制轨迹
- Unity3D登录界面工程
- 3DWebGIS 3DWebGIS
- OpenGL文档,api大全,可直接查询函数
- opengl轮廓字体源代码
- MFC读三维模型obj文件
- 3des加解密_C 实现
- 利用OpenGL写毛笔字算法
- MFC中OpenGL面和体的绘制以及动画效果
- unity3d反编译工具
- 基于OPENGL的光线跟踪源代码368758
- VC 实现三维旋转(源码)
- 自编用openGL实现3D分形树,分形山
- OpenGL球形贴图自旋程序
- Quest3D 2个动画相机切换实例
- OpenGL导入贴图的Texture类
- 计算机图形学(openGL)代码
- 用OpenGL开发的机械臂运动仿真程序(
- OpenGL-3D坦克模拟
- FLAC3D数值模拟的边坡稳定性
-
UnityWebPla
yerFull - Scratch:3d飞行模拟器 .sb3
- OPENGL实现世界上最小的3D游戏
- 亲子嘉年华路演活动模型
- 基于GTP修正的R3DGM建模与可视化方法
评论
共有 条评论