얼굴을 구별 할 수 있도록 직사각형 평행 육면체를 그려주는 코드 부분입니다.OpenGL - 잘못된 방향으로 회전합니다.
glMatrixMode(GL_MODELVIEW); // To operate on model-view matrix
glLoadIdentity(); // Reset the model-view matrix
glNewList(1, GL_COMPILE);
glBegin(GL_QUADS);
glVertex3f(-1, -1, 1.0f);
glVertex3f(1, -1, 1.0f);
glVertex3f(1, 1, 1.0f);
glVertex3f(-1, 1, 1.0f);
glEnd();
glEndList();
glTranslatef(0, 0, -50);
deg += 0.03;
glRotatef(deg, 0, 1, 0);
glScalef(10, 10, 20);
glColor3f(1, 0, 0); //red
glCallList(1);
glColor3f(1, 1, 0); //yellow
glRotatef(90, 0, 1, 0);
glCallList(1);
glColor3f(0, 1, 0); //green
glRotatef(90, 0, 1, 0);
glCallList(1);
glColor3f(0, 1, 1); //cyan
glRotatef(90, 0, 1, 0);
glCallList(1);
glColor3f(0, 0, 1); //blue
glRotatef(90, 1, 0, 0);
glCallList(1);
glColor3f(1, 0, 1); //magenda
glRotatef(180, 1, 0, 0);
glCallList(1);
이것은 또한 idleFunc의 콜백이기 때문에 객체가 항상 회전합니다. 내 문제는 개체를 그릴 때 사용하는 회전이 반드시 필요한 것보다 반대 다. 앞면은 빨간색으로 그려지지만 노란색은 왼쪽이 아닌 오른쪽으로 이동하고 시안 색은 왼쪽으로 이동합니다. 위쪽과 아래쪽에도 똑같이 발생합니다 (파란색은 아래쪽에, magenda는 위쪽에 있음).
무엇이 더 이상합니까? 전체 개체를 회전시키는 회전은 예상대로 오른쪽 규칙을 따릅니다.
예상에 대한 추론을 제공해야 할 수도 있습니다. 노란 얼굴 만보고 있으면 예상대로 정확하게 들립니다. 원래의면은 z 축의 양의 방향에 배치됩니다. 그런 다음 노란 얼굴의 경우 y 축을 중심으로 90도 회전합니다. y 축을 기준으로 90도 회전하면 양의 z 축이 양의 x 축으로 회전합니다. 어느 것이 오른쪽을 가리키고, 그래서 노란색 얼굴이 오른쪽으로 끝납니다. –
네가 맞아. 나는 물체가 움직이고 축이 자신의 위치에 머물러 있다고 생각했기 때문에 붉은 색 얼굴이 x 축으로 가고 왼쪽이 앞에오고 노란색으로 페인트를 칠 것으로 예상했습니다. 나는 내 실수를 지금 보았다. 감사. – Savvas