2

我是 C++ 和 openGL 的新手,所以请记住,我的编码技能不是一流的,但我学得很快。

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

现在我可以使用 glRotatef 旋转相机并查看整个立方体。

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

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

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

http://www.cprogramming.com/tutorial/3d/quaternions.html

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

至于跟踪小方块,我目前正在考虑为每个部分使用 6 个布尔值来确定它们通过中心部分的位置。

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

问候,,

4

1 回答 1

0

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

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

于 2012-11-17T20:34:58.243 回答