2022年3月8日 星期二

尖🦉-圖學筆記 Week03

★小技巧:

   1.利用#include <math.h>可以用sin()、cos()

    2. 以下程式碼可以形成圓形:(x,y可以更改圖形的位置)

        void mycirle( float x , float y , float r){

               glBegin(GL_POLYGON);

               for( float a=0 ; a<3.1415926*2 ; a+=0.01){  ///乘2拿掉會有半圓 a讓圓的點變多

                   glVertex2f( x+r*cos(a), y+r*sin(a) );

               }

                glEnd();

        

練習範例:

    1.去jsyeh.org/3dcg10/下載 data 跟win32

    2.windows 解壓縮到windows\

        data解壓縮後放進剛剛解壓縮的windows

    3.執行今天要用的windows/Tranformation.exe:

        右上角Screen-space view視窗 按右鍵:可以選擇其他形狀。

        中下 Command manipulation window視窗按右鍵:可以調整旋轉、位置等的數值。


建立GLUT專案-Translate(移動):
    1.今天的程式碼:(螢光色的是新教的)

        #include <GL/glut.h>
            void display()
           {
                glClear(GL_COLOR_BUFFER_BIT| GL_DEPTH_BUFFER_BIT);

                 glPushMatrix();///備份舊的位置的矩陣
                      glTranslatef( 0.5 , 0.5 , 0);///改變位置,不過這個移動會累積,所以要用push跟pop 來固定位置。Translatef(f前面沒有數字)
                      glColor3f(1,1,0);
                      glutSolidTeapot(0.3);
                 glPopMatrix();///還原矩陣

              glutSwapBuffers();
         }
        int main(int argc,char**argv)
        {
             glutInit(&argc,argv);
             glutInitDisplayMode(GLUT_DOUBLE|GLUT_DEPTH);
             glutCreateWindow("第三周Translate");

             glutDisplayFunc(display);

             glutMainLoop();
        }

    2.另加函式簡化:
            更改x和y的值就能一次創造多的茶壺。

能利用滑鼠控制的專案:
    1.利用glutMouseFunc(mouse)能隨著滑鼠點的位置改變:
            

    2.tea( (mousex-150)/150.0 , -(mousey-150)/150.0 ); 會這樣寫是因為要座標轉換
        圖裡的紅色座標是滑鼠用的,綠色是畫3D圖的座標,所以我們會需要轉換。

    
利用滑鼠點擊印出座標:
    小黑視窗會顯示按下與放開後的座標!
作業可利用滑鼠點出座標,順便印出。
*printf(" glVertex2f((%d-150)/150.0 ,-(%d-150)/150.0)\n",x,y); ///可以利用這行去快速拿座標

            




沒有留言:

張貼留言

VERY BEAUTIFUL, VERY POWERFUL

一.     一樣先安裝且設定好freeglut,OpecCV, 開啟CodeBlocks建立新專案 week11_gundam,                 把 MyGundam.zip下載解壓縮後的data資料夾放到freeglut/bin裡面 把week09_openc...