0
我试图用旋转矩阵旋转立方体的顶点,但每当我运行程序时立方体就会消失。使用旋转矩阵旋转立方体的顶点
我正在使用一个旋转矩阵,它是在旋转立方体x坐标的讲座中给予我们的。
double moveCubeX = 0;
float xRotationMatrix[9] = {1, 0, 0,
0, cos(moveCubeX), sin(moveCubeX),
0, -sin(moveCubeX), cos(moveCubeX)
};
我在我的键盘
case 't':
moveCubeX += 5;
break;
并做矩阵乘法上增加了moveCubeX变量与“T”键我使用
glMultMatrixf();
然而,当运行时,我将其添加到我的代码中,但立方体刚刚消失。这是我在glMultMatrixf()函数中添加的位置。
void display(void)
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
gluLookAt(pan, 0, -g_fViewDistance,
pan, 0, -1,
0, 1, 0);
glRotatef(rotate_x, 1.0f, 0.0f, 0.0f); //Rotate the camera
glRotatef(rotate_y, 0.0f, 1.0f, 0.0f); //Rotate the camera
glMultMatrixf(xRotationMatrix);
我很努力地看到它在哪里,我出错了。
我本来它通过读取旋转矩阵维基百科的一个4×4,改变它的一些原因。无论如何,好消息是当我运行它时,立方体实际上显示出来,但是当我按下按键时它不会移动。关于度/弧度,我认为OpenGL根据这个http://stackoverflow.com/questions/2146884/why-does-opengl-use-degrees-instead-of-radians使用度数。 – JaAnTr 2014-11-14 17:30:22
我刚刚意识到你的意思是关于度和弧度,因为它在C++而不是OpenGL中。我刚刚尝试过,所以每增加0.175弧度。但是,它仍然不起作用,因为它实际上并没有对多维数据集做任何事情。 – JaAnTr 2014-11-14 17:37:51
@JaAnTr - 每次更改角度时都需要重新计算矩阵的单元格,而不是仅定义一次。 – 2014-11-14 17:44:22