2021年5月31日 星期一

𝔍𝔒𝔗𝔇-week15

 

電腦圖學_week15

2021/05/31(一)

   今日的上課內容:
  1. 存讀檔
  2. 修改工作目錄
  3. 產生茶壺
  4. 做轉動茶壺手臂


  今日的程式碼:
  • ///主題: 存檔 讀檔
  • #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   
                                            ↑會轉動的茶壺手臂
                                            ↑雙手臂轉動


沒有留言:

張貼留言

Week18期末作業(橘貓的跳舞熊熊)

 期末作業(橘貓的跳舞熊熊) 影片: https://youtu.be/R89tptMaQZw 程式碼: #include <opencv/highgui.h> #include <opencv/cv.h> #include <GL/glut.h...