You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

魔方Y/Z轴旋转动画异常求助(附代码与演示视频)

魔方面旋转动画Y/Z轴旋转异常问题

我开发的魔方面旋转动画程序出现异常,涉及Y轴和Z轴的旋转功能无法正常工作,我录制了视频直观展示问题。

以下是相关代码,rotateX/Y/Z函数仅用于更新每个小方块的rotation结构体,因此未附上该部分代码。我已尝试所有能想到的方法仍无法解决。

private async void L(int n)         //此功能可正常运行
{
    for (int i = 0; i < 15 * n; i++)
    {
        cube[0].rotateX(6 *DEGREE);
        cube[1].rotateX(6 * DEGREE);        //将魔方左面向X轴旋转90度
        cube[2].rotateX(6 * DEGREE);
        cube[9].rotateX(6 * DEGREE);
        cube[10].rotateX(6 * DEGREE);
        cube[11].rotateX(6 * DEGREE);
        cube[17].rotateX(6 * DEGREE);
        cube[18].rotateX(6 * DEGREE);
        cube[19].rotateX(6 * DEGREE);
        Invalidate(rec);
        await Task.Delay(1);
    }
    cube[0].rotateX(-90 * DEGREE);      //此处将方块快速旋转回初始状态
    cube[1].rotateX(-90 * DEGREE);
    cube[2].rotateX(-90 * DEGREE);
    cube[9].rotateX(-90 * DEGREE);
    cube[10].rotateX(-90 * DEGREE);
    cube[11].rotateX(-90 * DEGREE);
    cube[17].rotateX(-90 * DEGREE);
    cube[18].rotateX(-90 * DEGREE);
    cube[19].rotateX(-90 * DEGREE);
    CubeFaces = Rotations.L(1, CubeFaces);      //此方法修改左面色块并更新显示
    Invalidate(rec);                            //使魔方看起来完成了旋转
}

private async void R(int n)         //此功能同样可正常运行
{
    for (int i = 0; i < 15 * n; i++)
    {
        cube[6].rotateX(-6 * DEGREE);
        cube[7].rotateX(-6 * DEGREE);
        cube[8].rotateX(-6 * DEGREE);
        cube[14].rotateX(-6 * DEGREE);
        cube[15].rotateX(-6 * DEGREE);
        cube[16].rotateX(-6 * DEGREE);
        cube[23].rotateX(-6 * DEGREE);
        cube[24].rotateX(-6 * DEGREE);
        cube[25].rotateX(-6 * DEGREE);
        await Task.Delay(1);
        Invalidate(rec);
    }
    cube[6].rotateX(90 * DEGREE);
    cube[7].rotateX(90 * DEGREE);
    cube[8].rotateX(90 * DEGREE);
    cube[14].rotateX(90 * DEGREE);
    cube[15].rotateX(90 * DEGREE);
    cube[16].rotateX(90 * DEGREE);
    cube[23].rotateX(90 * DEGREE);
    cube[24].rotateX(90 * DEGREE);
    cube[25].rotateX(90 * DEGREE);
    CubeFaces = Rotations.R(1, CubeFaces);
    Invalidate(rec);
}

private async void U(int n)         //此功能无法正常运行,运行后即可看到问题
{
    for (int i = 0; i < 15 * n; i++)
    {
        cube[0].rotateY(6 * DEGREE);
        cube[3].rotateY(6 * DEGREE);
        cube[6].rotateY(6 * DEGREE);
        cube[9].rotateY(6 * DEGREE);
        cube[12].rotateY(6 * DEGREE);
        cube[14].rotateY(6 * DEGREE);
        cube[17].rotateY(6 * DEGREE);
        cube[20].rotateY(6 * DEGREE);
        cube[23].rotateY(6 * DEGREE);

        //cube[0].rotateX(cube[0].GetRotation().z);
        //cube[3].rotateX(-rotation.x);
        //cube[6].rotateX(-rotation.x);
        //cube[9].rotateX(-rotation.x);
        //cube[12].rotateX(-rotation.x);
        //cube[14].rotateX(-rotation.x);
        //cube[17].rotateX(-rotation.x);
        //cube[20].rotateX(-rotation.x);
        //cube[23].rotateX(-rotation.x);
        await Task.Delay(1);
        Invalidate();
    }
}

private async void F(int n)     //此功能同样无法正常运行,运行后即可看到问题
{
    for (int i = 0; i < 15 * n; i++)
    {
        cube[0].rotateZ(6 * DEGREE);            //X轴旋转功能正常,但Y轴和Z轴旋转异常
        cube[1].rotateZ(6 * DEGREE);
        cube[2].rotateZ(6 * DEGREE);
        cube[3].rotateZ(6 * DEGREE);
        cube[4].rotateZ(6 * DEGREE);
        cube[5].rotateZ(6 * DEGREE);
        cube[6].rotateZ(6 * DEGREE);
        cube[7].rotateZ(6 * DEGREE);
        cube[8].rotateZ(6 * DEGREE);
        await Task.Delay(1);
        Invalidate();
    }
    //cube[0].rotateZ(-90 * DEGREE);
    //cube[1].rotateZ(-90 * DEGREE);
    //cube[2].rotateZ(-90 * DEGREE);
    //cube[3].rotateZ(-90 * DEGREE);
    //cube[4].rotateZ(-90 * DEGREE);
    //cube[5].rotateZ(-90 * DEGREE);
    //cube[6].rotateZ(-90 * DEGREE);
    //cube[7].rotateZ(-90 * DEGREE);
    //cube[8].rotateZ(-90 * DEGREE);
    //CubeFaces = Rotations.F(1, CubeFaces);
}

我尝试过U函数中注释掉的代码,原本以为可以抵消魔方的异常旋转,但结果反而更糟。

内容的提问来源于stack exchange,提问作者Alex Morris

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 22:15:28