如何将此多边形旋转到我旋转立方体的相同位置?

时间:2015-01-10 18:57:52

标签: c++ opengl glut

我正在尝试将方块旋转到红色正方形上绘制的位置。

我已经使用了以下更大的长方体,它处于我想要的位置;

glrotatef ( n , 1.0, 0 , 0 ); (n is a changing value on keystrokes)

glrotatef ( x , 0, 1.0, 0 ); (x is a changing value on keystrokes)

然而,当我试图用方形做类似的事情它只是消失时,我使用了glvertex3f并将所有的z值都设为0,但是在旋转z轴时我永远无法达到我需要的点,所以它必须是与长方体一样的x和y的组合。

enter image description here

1 个答案:

答案 0 :(得分:1)

问题是你的draw_cuboid()函数在原点(正确)中绘制立方体,然后通过调用glRotatef()修改的投影矩阵进行旋转。这是正确的方法。另一方面,您的draw_rect()函数以您的原点为中心绘制矩形,而是使用变量xy来定位它,影响旋转中心点。

你应该做的是绘制以(0,0)为中心的矩形,旋转它,然后将其翻译为xy

下图(右)说明了绘制矩形时的情况。图片取自here

另请注意,您使用的是已弃用的OpenGL代码。您应该使用现代OpenGL绘制多边形。 Here有一个关于如何做的非常好的教程。

Rotation