存檔(小困難)
#include <GL/glut.h> #include <stdio.h>///file for output float oldX=0,oldY=0,angle[8]={0,0,0,0,0,0,0,0}; int now=0; FILE * fout=NULL;///file for output void motion(int x, int y) { angle[now] -= y - oldY; oldY=y; oldX=x; if(fout==NULL) fout=fopen("02160013.txt","w+");///file for output for(int i=0;i<8;i++)///file for output { fprintf(fout,"%.1f\t",angle[i]); } fprintf(fout,"\n"); }///txt檔案在freeglut-->bin資料夾裡 void keyboard(unsigned char key,int x,int y) { if(key=='1') now=1; if(key=='2') now=2; if(key=='3') now=3; if(key=='4') now=4; glutPostRedisplay(); } void drawBody(){ glPushMatrix(); glScalef(1, 0.5, 0.5); glutSolidCube(1); glPopMatrix(); } void drawArm(){ glPushMatrix(); glScalef(0.6, 0.3, 0.3); glutSolidCube(1); glPopMatrix(); } void display() { { ///Lighting glColor3ub(166,132,100); GLfloat pos[]={0, 0, -1, 0}; glLightfv(GL_LIGHT0, GL_POSITION, pos); glEnable(GL_LIGHT0); //glEnable(GL_LIGHTING); glEnable(GL_DEPTH_TEST); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); } glPushMatrix(); glTranslatef(0.5, 0, 0);///把樓下的 "會對Arm Joint做旋轉的東西" 再移到右上 掛上去 glRotatef(angle[1], 0,0,1);///把下面整團, 都對中間做旋轉 glTranslatef(0.25, 0,0);///這是把它往右移, Arm Joint在中間 glColor3f(0,0,1); drawArm();///這是個Arm --- Right Upper Arm glPushMatrix(); glTranslatef(0.25, 0, 0);///把樓下的 "會對Arm Joint做旋轉的東西" 再移到右上 掛上去 glRotatef(angle[2], 0,0,1);///把下面整團, 都對中間做旋轉 glTranslatef(0.25, 0,0);///這是把它往右移, Arm Joint在中間 glColor3f(0,1,0); drawArm(); ///Right Lower Arm glPopMatrix(); glPopMatrix(); glPushMatrix(); glTranslatef(-0.5, 0, 0);///把樓下的 "會對Arm Joint做旋轉的東西" 再移到右上 掛上去 glRotatef(-angle[3], 0,0,1);///把下面整團, 都對中間做旋轉 glTranslatef(-0.25, 0,0);///這是把它往右移, Arm Joint在中間 glColor3f(0.5,0.5,1); drawArm();///這是個Arm --- Left Upper Arm glPushMatrix(); glTranslatef(-0.25, 0, 0);///把樓下的 "會對Arm Joint做旋轉的東西" 再移到右上 掛上去 glRotatef(-angle[4], 0,0,1);///把下面整團, 都對中間做旋轉 glTranslatef(-0.25, 0,0);///這是把它往右移, Arm Joint在中間 glColor3f(0.5,1,0.5); drawArm(); ///Left Lower Arm glPopMatrix(); glPopMatrix(); drawBody(); glFlush(); } void mouse(int button, int state, int x, int y){ if(state==GLUT_DOWN) { oldX=x; oldY=y; } } void timer(int t) { glutTimerFunc(20, timer, t+1); glutPostRedisplay(); } int main(int argc, char**argv) { glutInit(&argc, argv); glutCreateWindow("T-R-T test"); glutDisplayFunc(display); glutTimerFunc(20, timer, 0); glutMouseFunc(mouse); glutKeyboardFunc(keyboard); glutMotionFunc(motion); glutMainLoop(); }
|
沒有留言:
張貼留言