使用透視效果來實現機器人的旋轉:
float eyeX=0, eyeY= 0, eyeZ= 2;
float centerX=0, centerY=0, centerZ=0;
float upX=0, upY=1, upZ=0;
float angle=0, dir=1;
bool flag = true;
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(60,1,0.001,10000);
glMatrixMode(GL_MODELVIEW);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
angle+= 0.01;
if(eyeY > 1) flag = true;
if(eyeY < -1) flag = false;
if(!flag) eyeY += 0.01;
else eyeY -= 0.01;
eyeX = sin(angle);
eyeZ = cos(angle);
glPushMatrix();
gluLookAt(eyeX, eyeY, eyeZ,
centerX, centerY, centerZ,
upX, upY, upZ);
加入定時器:
void timer(int t)
{
glutTimerFunc(100, timer, t+1);
angle+= 0.1;
if(eyeY > 1) flag = true;
if(eyeY < -1) flag = false;
if(!flag) eyeY += 0.01;
else eyeY -= 0.01;
eyeX = sin(angle);
eyeZ = cos(angle);
glutPostRedisplay();
}
這樣將隨時間變化的角度通過計時器進行了時間控制。
TRT:
glTranslatef(-0.14,0.19,-0.02);
glRotatef(-angle *5, 0,0,1);
glTranslatef(-0.01,-0.04,0);
glmDraw(pmodel_arm_high_right, GLM_SMOOTH | GLM_MATERIAL);
glutWireSphere(0.01,15,15);
glPushMatrix();
glTranslatef(-0.01,-0.05,0.05);
glRotatef(-angle *5, 0,0,1);
glTranslatef(-0.09,-0.15,0);
glmDraw(pmodel_arm_low_right, GLM_SMOOTH | GLM_MATERIAL);
glPopMatrix();


沒有留言:
張貼留言