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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值