電腦圖學_week15
2021/05/31(一)
今日的上課內容:
- 存讀檔
- 修改工作目錄
- 產生茶壺
- 做轉動茶壺手臂
今日的程式碼:
- ///主題: 存檔 讀檔
- #include <stdio.h> ///printf() fprintf() fscanf() fopen() step 01外掛
- int main(int argc , char** argv)
- {
- FILE * fout=NULL;///file output 變數step01 檔案指標
- fout = fopen("檔名.txt", "w+");///step 01 開啟檔案,檔名.txt,模式:write+
- printf( "Hello World\n");
- fprintf(fout, "Hello World\n");
- }
- ///主題: 存檔 讀檔
- #include <stdio.h> ///printf() fprintf() fscanf() fopen() step 01外掛
- int main(int argc , char** argv)
- {
- // FILE * fout=NULL;///file output 變數step01 檔案指標
- // fout = fopen("檔名.txt", "w+");///step 01 開啟檔案,檔名.txt,模式:write+
- //
- // printf( "Hello World\n");
- // fprintf(fout, "Hello World\n");
- ///先把舊程式 註解掉
- FILE * fin = NULL;///step03 改成讀檔
- fin = fopen("檔名.txt","r");///step03 開啟step03/step02的檔案,Read
- ///scanf( "%d", &n); ///int n
- ///scanf( "%c", &c); ///char c
- ///scanf( "%f", &f); ///float f
- ///scanf( "%s", line);///char line[100]
- char line[100];///step03 宣告一個字串line
- fscanf(fin , "%s", line);///step03讀入一個字串
- printf("現在讀到的是 %s \n", line);///step03 順便印出字串
- fscanf(fin, "%s", line);///step03 讀入一個字串
- printf("現在讀到的是 %s \n", line);///step03順便印出字串
- }
- ///主題: 茶壺
- #include <stdio.h> ///printf() fprintf() fscanf() fopen() step 01外掛
- #include <GL/glut.h>
- void display()
- {
- glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
- glutSolidTeapot(0.3);
- glutSwapBuffers();
- }
- int main(int argc , char** argv)
- {
- glutInit(&argc, argv);
- glutInitDisplayMode( GLUT_DOUBLE | GLUT_DEPTH );
- glutCreateWindow("week15 many angles");
- glutDisplayFunc(display);
- glutMainLoop();
- }///先不放貼圖,先不放打光
- ///主題: 會轉動的茶壺手臂
- #include <stdio.h> ///printf() fprintf() fscanf() fopen() step 01外掛
- #include <GL/glut.h>
- float angle = 0,diff = 2;///上週程式,會增加.會減少!!!
- void timer(int t)///上周程式,會增加.會減少!!!
- {
- glutTimerFunc(30, timer,t+1);///上週程式,設定新的timer
- angle += diff;///上週程式,會增加.會減少!!!
- if(angle>90) diff =-2;///上週程式,會增加.會減少!!!
- if(angle<0) diff = +2;///上週程式,會增加.會減少!!!
- glutPostRedisplay();///上週教display()
- }
- void display()
- {
- glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
- glPushMatrix();///Step05-2
- glutSolidTeapot( 0.3 );///身體
- glPushMatrix();///Step05-2
- glTranslatef(-0.3,0,0);
- glRotatef(angle, 0,0,1);
- glTranslatef(-0.3,0,0);
- glutSolidTeapot( 0.3 );///左手臂, 但是,要用 T-R-T移位置
- glPushMatrix();
- glTranslatef(-0.3, 0,0);
- glRotatef(angle, 0,0,1);
- glTranslatef(-0.3, 0,0);
- glutSolidTeapot( 0.3 );///左手肘
- glPopMatrix();
- glPopMatrix();///Step05-2
- glPushMatrix();///Step05-2
- glutSolidTeapot( 0.3 );///右手臂
- glutSolidTeapot( 0.3 );///右手肘
- glPopMatrix();///Step05-2
- glPopMatrix();///Step05-2
- glutSwapBuffers();
- }
- int main(int argc , char** argv)
- {
- glutInit(&argc, argv);
- glutInitDisplayMode( GLUT_DOUBLE | GLUT_DEPTH );
- glutCreateWindow("week15 many angles");
- glutDisplayFunc(display);
- glutTimerFunc(0, timer, 0);
- glutMainLoop();
- }///先不放貼圖,先不放打光
- ///主題: 雙手臂轉動
- #include <stdio.h> ///printf() fprintf() fscanf() fopen() step 01外掛
- #include <GL/glut.h>
- float angle = 0,diff = 2;///上週程式,會增加.會減少!!!
- void timer(int t)///上周程式,會增加.會減少!!!
- {
- glutTimerFunc(30, timer,t+1);///上週程式,設定新的timer
- angle += diff;///上週程式,會增加.會減少!!!
- if(angle>90) diff =-2;///上週程式,會增加.會減少!!!
- if(angle<0) diff = +2;///上週程式,會增加.會減少!!!
- glutPostRedisplay();///上週教display()
- }
- void display()
- {
- glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
- glPushMatrix();///Step05-2
- glutSolidTeapot( 0.3 );///身體
- glPushMatrix();///Step05-2
- glTranslatef(-0.3,0,0);
- glRotatef(angle, 0,0,1);
- glTranslatef(-0.3,0,0);
- glutSolidTeapot( 0.3 );///左手臂, 但是,要用 T-R-T移位置
- glPushMatrix();
- glTranslatef(-0.3, 0,0);
- glRotatef(angle, 0,0,1);
- glTranslatef(-0.3, 0,0);
- glutSolidTeapot( 0.3 );///左手肘
- glPopMatrix();
- glPopMatrix();///Step05-2
- glPushMatrix();///Step05-2
- glTranslatef(+0.3,0,0);
- glRotatef(-angle, 0,0,1);
- glTranslatef(+0.3,0,0);
- glutSolidTeapot( 0.3 );///右手臂
- glPushMatrix();///step05-3
- glTranslatef(+0.3,0,0);
- glRotatef(-angle, 0,0,1);
- glTranslatef(+0.3,0,0);
- glutSolidTeapot( 0.3 );///右手肘
- glPopMatrix();///Step05-3
- glPopMatrix();///Step05-2
- glPopMatrix();///Step05-2
- glutSwapBuffers();
- }
- int main(int argc , char** argv)
- {
- glutInit(&argc, argv);
- glutInitDisplayMode( GLUT_DOUBLE | GLUT_DEPTH );
- glutCreateWindow("week15 many angles");
- glutDisplayFunc(display);
- glutTimerFunc(0, timer, 0);
- glutMainLoop();
- }///先不放貼圖,先不放打光
今日成果:
↑成功的存讀檔↑檔案會存在freeglut/bin裡面叫作檔名.txt
↑存檔完會跳出提示訊息
↑下面的檔案位置會改變
↑會印出檔案內的文字
↑會產生茶壺記得加freeglut.dll
↑會轉動的茶壺手臂
↑雙手臂轉動







沒有留言:
張貼留言