2021年6月2日 星期三

week15 忙到肚子好餓

 教新東西!!!!!!!!!

用code創文字檔

#include <stdio.h>

int main(int argc, char**argv)

{

    FILE * fout = NULL;///檔案指標

    fout = fopen("檔名.txt","w+" );///用w+模式開檔

    printf("Hello Worid\n");

    fprintf(fout,"Hello Worid\n");


}

看起來沒啥不過你的資料夾當中除現了名叫檔名的資料夾囉


















之後改專案設定的cbp檔




之後去(檔名)的資料夾裡讀取hello world

#include <stdio.h>

int main(int argc, char**argv)

{

        FILE * fin = NULL;

        fin = fopen("檔名.txt","r");


        char line[100];

        fscanf(fin, "%s", line);

        printf("讀到字串: %s\n", line);

         fscanf(fin, "%s", line);

        printf("讀到字串: %s\n", line);

}












老朋友出現了

#include <stdio.h>///可割可棄

#include <GL/glut.h>

void display()

{

    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

        glutSolidTeapot( 0.3 );///身體

        glutSolidTeapot( 0.3 );///左手臂(重疊了)

        glutSolidTeapot( 0.3 );///左手肘(重疊了)

    glutSwapBuffers();

}

int main( int argc, char ** argv )

{

    glutInit( &argc, argv );

    glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);

    glutCreateWindow("week15 file");


    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);

            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();

}























之後就如法泡泡製兩次
程式碼如下
只有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();
                glTranslatef(-0.3,0,0);///掛上肩膀
                glRotatef(angle,0,0,1);///轉動
                glTranslatef(-0.3,0,0);///旋轉中心
                glutSolidTeapot(0.3);///零一個茶壺
            glPopMatrix();
        glPopMatrix();
    glPopMatrix();
    glutSwapBuffers();





















最後最後
把angle改成陣列 這樣就可以用鍵盤控制轉動
#include <stdio.h>
#include <GL/glut.h>
float angle[20]={},diff=2;
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);
            glRotatef(angle[0],0,0,1);
            glTranslatef(-0.3,0,0);
            glutSolidTeapot(0.3);
            glPushMatrix();
                glTranslatef(-0.3,0,0);
                glRotatef(angle[1],0,0,1);
                glTranslatef(-0.3,0,0);
                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();
}
























































8














1


沒有留言:

張貼留言

距地表面160 Week11

 #include "glm.h" GLMmodel* pmodel = NULL; void drawmodel(void) {     if (!pmodel) { pmodel = glmReadOBJ("data/porsche.obj...