魔方';s立方体(旋转和跟踪) 我是C++能快速学习的人,所以我的代码技能不是一流的,但我学得很快。

魔方';s立方体(旋转和跟踪) 我是C++能快速学习的人,所以我的代码技能不是一流的,但我学得很快。,c++,opengl,rubiks-cube,C++,Opengl,Rubiks Cube,所以,因为我最喜欢的拼图是魔方,所以我决定释放我的创造力,所以现在我正在制作一个3D魔方,我用四边形分别表示每个立方体(26块,不包括核心部分)。(在我学会如何使用纹理后,计划将来使用纹理) 现在,我可以使用glRotatef旋转相机,看到整个立方体 我偶然发现的主要问题是,旋转每个面,并跟踪立方体,以确定它们现在属于哪些面,这也将决定如果面旋转,它们是否会受到影响 在这一点上,我意识到使用glRotatef对前进没有任何好处,所以我四处搜索并发现了四元数,所以我读了一大堆关于它们的教程,但我不

所以,因为我最喜欢的拼图是魔方,所以我决定释放我的创造力,所以现在我正在制作一个3D魔方,我用四边形分别表示每个立方体(26块,不包括核心部分)。(在我学会如何使用纹理后,计划将来使用纹理)

现在,我可以使用glRotatef旋转相机,看到整个立方体

我偶然发现的主要问题是,旋转每个面,并跟踪立方体,以确定它们现在属于哪些面,这也将决定如果面旋转,它们是否会受到影响

在这一点上,我意识到使用glRotatef对前进没有任何好处,所以我四处搜索并发现了四元数,所以我读了一大堆关于它们的教程,但我不知道如何实现和使用它们

这是我读过的最后一篇教程:

我的请求将是一个关于如何实现它并在显示功能中使用它的非常简单的示例

至于保持立方体的轨迹,我目前正在考虑使用6个布尔值来确定它们在中间部分的位置

如果你有任何其他更好的管理面部旋转的想法或概念,请告诉我

关于

我偶然发现的主要问题是,旋转每个面,并跟踪立方体,以确定它们现在属于哪些面,这也将决定如果面旋转,它们是否会受到影响


基本上这就是你的整个算法。你能做的就是拥有一个包含6个“面”的数据结构。这些面是立方体的边。每个面都有一个指向北面、南面、东面和西面的指针。此外,每个面将包含3行3列立方体。您现在应该可以进行必要的操作来上下移动面部等等。

这里有些细节不清楚。将立方体的状态从一个操作更改为另一个操作(如“向左旋转面90度CW”)时有问题吗?或者为每个操作设置平滑动画时有问题吗?这些是完全不同的问题,你必须独立解决它们。矩阵比四元数更容易处理。如果你真的不需要它们,就和Matrix呆在一起。以上不需要四元数。