资源简介
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
相关资源
- OPenGL中绘制茶杯模型
- 3DS max格式坦克模型
-
unity3d读取xm
l插件Mono.xm l - 刚学的OpenGL画五角星
- CATIA 3D点坐标快速导出EXCEL(适用任何
- Qt自定义继承QOpenGLWidget的类进行绘图
- 3D图形库实心渲染源代码
- Unity3d背包物品拖拽
- 读取obj文件含顶点法线,2013编译通过
- OpenGL画树的代码
- 3D排列三三星过滤软件(免费版)V4
- 无限滚动TableView
- Unity3D使用socket通讯源码
- 塔防游戏源码
- cube explorer魔方还原
- OpenGL开发的机械臂运动仿真程序
- 3DMark11 CD key
- Phong光照及在GLSL中使用函数
- 现代OpenGL+Qt:绘制可旋转、带光照效
- 现代OpenGL+Qt学习笔记之四:使用Unif
- 现代OpenGL+Qt学习笔记之三:显示一个
- 现代OpenGL+Qt学习笔记之二:程序框架
- Unity中修改3D模型的透明度,实现3D模
- QFN16 3D封装
- OpenGL显示汉字
- LabWindows CVI 3D graph控件编程
- osgEarth35集视频教程及源码
- cocoslua 3d搓牌效果
- openGL超级全的库,有GL.h、GLAUX.h/lib、
- Unity3D插件-- LitJson.dll
评论
共有 条评论