2021年6月2日 星期三

電腦圖學week15

1.檔案存讀,在執行目錄中建立文字檔,裡面寫要讀取的資料

    #include <stdio.h>

    int main(int argc,char**argv)

    {

        FILE*fout = NULL;

        fout = fopen("檔名.txt","w+");

        printf (      "Hello World\n");

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

    }

2.更改專案目錄,將freeglut.dll放到week15專案裡,修改專案中的week15-file.cbp,更改路徑

    <?xml version="1.0" encoding="UTF-8" standalone="yes" ?>

    <CodeBlocks_project_file>

    <FileVersion major="1" minor="6" />

    <Project>

    <Option title="week15" />

    <Option pch_mode="2" />

    <Option compiler="gcc" />

    <Build>

    <Target title="Debug">

         <Option output="bin/Debug/week15" prefix_auto="1" extension_auto="1" />

         👉<Option working_dir="." />

    <Option object_output="obj/Debug/" />

    <Option type="1" />

    <Option compiler="gcc" />

    <Compiler>

    <Add option="-g" />

    </Compiler>

    </Target>

    <Target title="Release">

    <Option output="bin/Release/week15" prefix_auto="1" extension_auto="1" />

    👉<Option working_dir="." />

    <Option object_output="obj/Release/" />

    <Option type="0" />

    <Option compiler="gcc" />

    <Compiler>

    <Add option="-O2" />

    </Compiler>

    <Linker>

    <Add option="-s" />

    </Linker>

    </Target>

    </Build>

    <Compiler>

    <Add option="-Wall" />

    <Add directory="C:/Users/uesr/Desktop/freeglut/include" />

    </Compiler>

    <Linker>

    <Add library="glut32" />

    <Add library="opengl32" />

    <Add library="glu32" />

    <Add library="winmm" />

    <Add library="gdi32" />

    <Add directory="C:/Users/uesr/Desktop/freeglut/lib" />

    </Linker>

    <Unit filename="main.cpp" />

    <Extensions>

    <code_completion />

    <envvars />

    <debugger />

    </Extensions>

    </Project>

    </CodeBlocks_project_file>

3.實作,四個關節

    #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 == '0') angleID=0;

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

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

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

    }

    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 );///左手臂(重疊了)

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

                    glPopMatrix();

            glPopMatrix();

            glPushMatrix();///右半邊

                glTranslatef(+0.3,0,0);///(3)掛在正確的地方

                glRotatef(angle[2],0,0,1);///(2)旋轉

                glTranslatef(+0.3,0,0);///(1)把關節放到正中心

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

                    glPushMatrix();

                        glTranslatef(+0.3,0,0);///(3)掛在正確的地方

                        glRotatef(angle[3],0,0,1);///(2)旋轉

                        glTranslatef(+0.3,0,0);///(1)把關節放到正中心

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

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

        glutDisplayFunc(display);

        glutTimerFunc(0,timer,0);

        glutMainLoop();

    }

沒有留言:

張貼留言

距地表面160 Week11

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