2024年5月13日 星期一

week13 頂級坐牢

 WEEK13

-------------------------------------------------------

week13-1_keyboard_angleID_mouse__motion_angle

控制關節

int angleID=0;

float angle[20]={};

void keyboard(unsigned char key,int x,int y){

    if(key=='0')angleID=0;

    if(key=='1')angleID=1;

    if(key=='2')angleID=2;

    if(key=='3')angleID=3;


}

glutMotionFunc(motion);


------------------------------
void keyboard(unsigned char key,int x,int y){
    if(key=='r'){
        if(fin==NULL)fin=fopen("angle.txt","r");
        for(int i=0;i<20;i++){
            fscanf(fin,"%f",&angle[i]);
        }
        glutPostRedisplay();
    }

    if(key=='s'){
        if(fout==NULL)fout=fopen("angle.txt","w+");
        for(int i=0;i<20;i++){
            printf("%.1f ",angle[i]);
             fprintf(fout,"%.1f ",angle[i]);
        }
        printf("\n");
        fprintf(fout,"\n");
    }
    if(key=='0')angleID=0;
    if(key=='1')angleID=1;
    if(key=='2')angleID=2;
    if(key=='3')angleID=3;

}
-------------------------------

week13-2_many_angle

複製 week13-1_keyboard_angleID_mouse_motion_angle 到桌面

改目錄名 week13-2_many_angle

把 .cbp,改檔名 week13-2_many_angle.cbp

開啟 Maya,把 Gundam 模型,裁切出另一個手臂的 upper2.obj、lower2.obj並產生對應的 upper2.mtl、lower2.mtl

_------------------------------------------------------------

week13-3_FILE_fopen_fprintf_fscanf

{

    glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);

    glPushMatrix();

        glRotatef(180,0,1,0);

        drawBody();

        glPushMatrix();

            glTranslatef(-0.15,0,0);


            glRotatef(angle[0],1,0,0);

            glRotatef(angle[1],0,1,0);

            glRotatef(angle[2],0,0,1);


            glTranslatef(-0.025,-0.05,0);

            drawUpper();

            glPushMatrix();


                glTranslatef(0,-0.2,0);

                glRotatef(angle[3],1,0,0);

                glTranslatef(-0.02,-0.2,0);

                drawLower(); ///glutSolidTeapot( 0.3 );

            glPopMatrix();

        glPopMatrix();

    glPopMatrix();

    glutSwapBuffers();


}

加上程式碼

#include <stdio.h>

FILE * fout = NULL;

FILE * fin = NULL;

void keyboard(unsigned char key, int x, int y){

                       if(key=='s'){

                            if(fout==NULL) fout = fopen("angle.txt", "w+");

                            for(int i=0; i<20; i++){

                                printf("%.1f ", angle[i]);

                            }

                            printf("\n");

                       }

                       if(key=='0') angleID = 0;

                       if(key=='1') angleID = 1;

                       if(key=='2') angleID = 2;

                       if(key=='3') angleID = 3;

                  }

可存檔!




沒有留言:

張貼留言