Van*_*ear 5 c++ opengl rubiks-cube
我正在开发我的第一个真正的OpenGL项目.这是一个3x3x3 Rubiks立方体.这是到目前为止我所拥有的简单屏幕截图的链接(我的rubiks立方体)
通过在按住鼠标右键的同时拖动鼠标来旋转立方体.这是使用NeHe Tutorials(NeHe Arcball)的弧形球的例子
我有类singleCubes,它通过6个实际四边形表示一个立方体,存储在可以在其绘制方法中使用的显示列表中.ComplexCube类具有3x3x3单个立方体的数组,并在与完整的rubiks立方体交互时用作接口.
现在我想根据mousedragging旋转每个特定的面部,用鼠标左键按下.我使用pick来获取用户点击的单个多维数据集的相应边的id.这也有效.所以我点击一个面上一个立方体的一侧,根据拖动的方向,我设置受影响的立方体的旋转和偏移系数.(我也想实现你实际上看到的是旋转面而不是仅仅改变颜色)
现在我的问题是,当我用鼠标右键拖动任意方向旋转rubiks立方体时,它会变得颠倒过来.因此,当我单击一侧并想要将面向右旋转时,它的方向是错误的,因为如果立方体是倒置的或者其他什么,我无法跟踪.由于使用了弧形旋转,我没有x或y旋转角度,我可以使用它来确定这一点.
问题1:当使用上面链接的弧形示例时,如果立方体是倒置,倾斜等以便转换鼠标拖动信息(当旋转一个面时),我如何跟踪或稍后获取信息?
// In render function
glPushMatrix();
{
glMultMatrixf(Transform.M); // Rotation applied by arcball object
complCube.draw(); // Draw all the cubes using display lists
}
glPopMatrix();
Run Code Online (Sandbox Code Playgroud)
安装程序:C++与Microsoft Visual Studio 2008,GLEW,freeglut
像我们大多数人一样,您会遇到著名的万向锁问题。
请参阅:http ://www.opengl.org/discussion_boards/ubbthreads.php?ubb=showflat&Number=208925
这个问题有非常详细的记录,因此我没有太多必要在这里详细介绍。我相信您会找到大量有关它的信息。
| 归档时间: |
|
| 查看次数: |
2897 次 |
| 最近记录: |