主題 T-R-T轉動
階層轉動
(1).找出要改的程式碼
把要做的物體以外的變黑白
把定位左上的程式馬往下移
(2)修改的程式部分!
static void display(void)
{
const double t = glutGet(GLUT_ELAPSED_TIME) / 1000.0;
const double a = t*90.0;
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glColor3d(1,0,0);
glPushMatrix();
//glTranslated(-2.4,1.2,-6);
//glRotated(60,1,0,0);
glRotated(a,0,0,1); ///轉動!~~
glTranslated(-2.4,1.2,-6); ///把物體定位在左上角
glutSolidSphere(1,slices,stacks);
glPopMatrix();
glColor3f(1,1,1); 把下面程式的突變黑
2.茶壺的轉動
老師給的茶壺點及轉動程式碼:
#include <GL/glut.h>
float angle=0;///Now: 讓茶壼自動轉動的角度
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glPushMatrix();///Now:備份矩陣
glRotatef(angle, 0,0,1);///Now:轉動
glutSolidTeapot(0.3);
glPopMatrix();///Now:還原矩陣
glutSwapBuffers();
}
void motion(int x, int y)
{
angle=x;///Now: 改變角度
glutPostRedisplay();///Now: 請 重畫畫面
}
int main(int argc, char**argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE|GLUT_DEPTH);
glutCreateWindow("Week05 TRT");
glutDisplayFunc(display);
glutMotionFunc(motion);///Now:
glutMainLoop();
}
3.主要三步驟(以想要的地方做轉動)
T-R-T
glTransaltef(移到中心)
glRotate(轉動)
glTranslate(掛上去)
沒有留言:
張貼留言