2023年3月1日 星期三

week03_translate

week02-1

先到https://jsyeh.org/3dcg10/下載data win32 glut32.dll解壓縮

執行今天的課本範例 Transformation.exe

第一個程式:可讓茶壺移動

        #include <GL/glut.h>

        void display()
        {
                glPushMatrix();///備份的矩陣
                    glTranslated( 0.5, 0, 0);
                    glutSolidTeapot( 0.3 );

                glPopMatrix();///還原矩陣
                glutSwapBuffers();
           }
        int main(int argc, char *argv[])
        {
            glutInit(&argc, argv);
            glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
            glutCreateWindow("week03");

            glutDisplayFunc(display);

            glutMainLoop();
        }


第二個程式更改:

 #include <GL/glut.h>

        void display()
        {
                glPushMatrix();///備份的矩陣
                    glTranslated( 0.5, 0, 0);
                    glutSolidTeapot( 0.3 );

            glPopMatrix();///還原矩陣
            glutSwapBuffers();
        }
        #include <stdio.h>
        void mouse(int button,int state,int x,int y)
        {///請mouse函式幫忙
            printf("%d %d %d %d\n",button,state,x,y);
            ///button(左右鍵等),state(按下去是0,1)
        }
         int main(int argc, char *argv[])
    {
            glutInit(&argc, argv);
            glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
            glutCreateWindow("week03");

            glutDisplayFunc(display);
            glutMouseFunc(mouse);///請mouse函式幫忙
    
            glutMainLoop();
    }
可以移動茶壺並不出現殘影
#include <GL/glut.h>
        float X=0,Y=0;
        void display()
        {
            glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);///清背景,殘影
            glPushMatrix();///備份的矩陣
                glTranslated( X, Y, 0);
                glutSolidTeapot( 0.3 );

            glPopMatrix();///還原矩陣
            glutSwapBuffers();
           }
        ///#include <stdio.h>
        void mouse(int button,int state,int x,int y)
        {///請mouse函式幫忙
            X= (x-150)/150.0;///printf("%d %d %d %d\n",button,state,x,y);
           Y= -(y-150)/150.0;///button(左右鍵等),state(按下去是0,1)
        }
        int main(int argc, char *argv[])
        {
            glutInit(&argc, argv);
            glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
            glutCreateWindow("week03");
    
            glutDisplayFunc(display);
            glutMouseFunc(mouse);///請mouse函式幫忙

            glutMainLoop();

        }


小葉老師示範 GitHub 的 Gist功能, 只要在 gist.github.com 裡面 + 新增一個不公開的小程式, 便能經由 embedded 的 HTML JavaScript的方法, 把程式用很漂亮的格式,放在你的 blog 裡。(用html 檢視)





畫茶壺身體
#include <GL/glut.h>
  #include <stdio.h>
        void display()
        {

glBegin(GL_POLYGON);
滑鼠點座標

 glEnd();
  glutSwapBuffers();
}
兔子耳朵
        




沒有留言:

張貼留言