Qt魔方还原2

目的

通过键盘控制魔方每层转动,实现真正魔方效果
这里写图片描述

实施

  1. 旋转
    主要是先找到需要旋转的9个小立方块,18个保持原状态的小立方块,旋转的时候通过旋转坐标轴来达到效果,timeline 控制动画
/*保存timeline变化数值 */
void GLWidget::rotateCube(int angle)
{
    timelineRotateangle = angle;
    updateGL();
}

旋转坐标轴

//绘制旋转要动的方块
    glRotatef( timelineRotateangle,  xRoll,  yRoll,  zRoll );
    for(int i=0;i<9;i++)
    {
        drawOneCube(rotatecube[i],rotatecube[i]->x,rotatecube[i]->y,rotatecube[i]->z);
    }
    glRotatef( -timelineRotateangle,  xRoll,  yRoll,  zRoll );

    //绘制不用旋转的方块
    for(int i=0;i<18;i++)
    {
        drawOneCube(othercube[i],othercube[i]->x,othercube[i]->y,othercube[i]->z);
    }
  1. 计算颜色变化
    正确更新旋转后的颜色是重点之一
    比如,最外层白色 绕z轴旋转90度,9个小立方块颜色变化?
    绕z轴旋转,立方块前后面的颜色不变,上右下左面颜色依次更改。实际中,拿一个真实的魔方比较,可以更直观的感受。

3.旋转角度
旋转的角度有90,180,270,360四种情况,每种情况都可以用90度来表示,比如旋转270度,即3个90度,所以实现旋转90即可。

代码下载

https://download.csdn.net/download/gaobobo138968/10446141

猜你喜欢

转载自blog.csdn.net/gaobobo138968/article/details/80503872