魔方(旋转和跟踪)

Rubik's cube (Rotation and tracking)

本文关键字:跟踪 旋转 魔方      更新时间:2023-10-16

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

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

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

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

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

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

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

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

至于跟踪立方体,我目前正在考虑对每一块使用6个布尔值来确定它们在中心块中的位置。

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

问候,,

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

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