회전 행렬을 사용하여 큐브의 꼭지점을 회전 시키려고하지만 프로그램을 실행할 때마다 큐브가 사라집니다.회전 행렬을 사용하여 큐브의 꼭지점을 회전
저는 큐브의 x 좌표를 회전시키는 강의에서 우리에게 주어진 회전 행렬을 사용하고 있습니다. 나는 그러나 때
glMultMatrixf();
을 사용하고 내 키보드
case 't':
moveCubeX += 5;
break;
그리고 행렬 곱셈을 할 수의 't'키를 사용하여 moveCubeX 변수에 추가 해요
double moveCubeX = 0;
float xRotationMatrix[9] = {1, 0, 0,
0, cos(moveCubeX), sin(moveCubeX),
0, -sin(moveCubeX), cos(moveCubeX)
};
큐브가 실행 중일 때이를 코드에 추가했습니다. 이것은 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
OpenGL이 아닌 C++ 에서처럼도 및 라디안에 대한 의미를 알았습니다. 나는 매번 0.175 라디안을 더할 수 있도록 노력했습니다. 그러나 큐브에 실제로 아무 것도하지 않기 때문에 여전히 작동하지 않습니다. – JaAnTr
@JaAnTr - 각도를 변경할 때마다 행렬의 셀을 한 번만 다시 계산해야합니다. –