第一節課沒有跟到不知道發生什麼事先上傳第二節課的內容
今天做的是機器人2.0,用T-R-T使茶壺旋轉
程式碼:#include <stdio.h>///可割可棄
#include <GL/glut.h>
float angle=0,diff=2;
void timer(int t){
glutTimerFunc(30,timer,t+1);
angle+=diff;
if(angle>90) diff=-2;
if(angle<0) diff=+2;
glutPostRedisplay();
}
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glPushMatrix();
///glutSolidTeapot( 0.3 );///身體
glPushMatrix();
glTranslatef(-0.3,0,0);
glRotatef(angle,0,0,1);
glTranslatef(-0.3,0,0);
glutSolidTeapot( 0.3 );///左手臂(重疊了)
glPushMatrix();
///glutSolidTeapot( 0.3 );///左手肘(重疊了)
glPopMatrix();
glPopMatrix();
glPopMatrix();
glutSwapBuffers();
}
int main( int argc, char ** argv )
{
glutInit( &argc, argv );
glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("week15 file");
glutTimerFunc(0,timer,0);
glutDisplayFunc(display);
glutMainLoop();
}
增加程式碼加入另外兩個關節
#include <stdio.h>///可割可棄
#include <GL/glut.h>
float angle=0,diff=2;
void timer(int t){
glutTimerFunc(30,timer,t+1);
angle+=diff;
if(angle>90) diff=-2;
if(angle<0) diff=+2;
glutPostRedisplay();
}
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glPushMatrix();
glutSolidTeapot( 0.3 );///身體
glPushMatrix();
glTranslatef(-0.3,0,0);///3.掛在正確的地方
glRotatef(angle,0,0,1);///2.旋轉
glTranslatef(-0.3,0,0);///1.把關節旋轉中心放到畫面中心
glutSolidTeapot( 0.3 );///左手臂(重疊了)
glPushMatrix();
glTranslatef(-0.3,0,0);///3.掛在正確的地方
glRotatef(angle,0,0,1);///2.旋轉
glTranslatef(-0.3,0,0);///1.把關節旋轉中心放到畫面中心
glutSolidTeapot( 0.3 );///左手肘(沒重疊了)
glPopMatrix();
glPopMatrix();
glPopMatrix();
glutSwapBuffers();
}
int main( int argc, char ** argv )
{
glutInit( &argc, argv );
glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("week15 file");
glutTimerFunc(0,timer,0);
glutDisplayFunc(display);
glutMainLoop();
}
加入改變角度的程式碼使關節可以固定,按0或1改變
#include <stdio.h>///可割可棄
#include <GL/glut.h>
float angle[20]={},diff=2;///本來只有一個角度,現在有很多個,初始為0
int angleID=0;///現在要改第幾個角度
void timer(int t){
glutTimerFunc(30,timer,t+1);
angle[angleID]+=diff;
if(angle[angleID]>90) diff=-2;
if(angle[angleID]<0) diff=+2;
glutPostRedisplay();
}
void keyboard(unsigned char key ,int x,int y){
if(key=='1')angleID=1;
if(key=='0')angleID=0;
}
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glPushMatrix();
glutSolidTeapot( 0.3 );///身體
glPushMatrix();
glTranslatef(-0.3,0,0);///3.掛在正確的地方
glRotatef(angle[0],0,0,1);///2.旋轉
glTranslatef(-0.3,0,0);///1.把關節旋轉中心放到畫面中心
glutSolidTeapot( 0.3 );///左手臂(重疊了)
glPushMatrix();
glTranslatef(-0.3,0,0);///3.掛在正確的地方
glRotatef(angle[1],0,0,1);///2.旋轉
glTranslatef(-0.3,0,0);///1.把關節旋轉中心放到畫面中心
glutSolidTeapot( 0.3 );///左手肘(重疊了)
glPopMatrix();
glPopMatrix();
glPopMatrix();
glutSwapBuffers();
}
int main( int argc, char ** argv )
{
glutInit( &argc, argv );
glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("week15 file");
glutKeyboardFunc(keyboard);
glutTimerFunc(0,timer,0);
glutDisplayFunc(display);
glutMainLoop();
}




沒有留言:
張貼留言