顯示具有 week04 標籤的文章。 顯示所有文章
顯示具有 week04 標籤的文章。 顯示所有文章

2021年6月22日 星期二

距地表面160 Week04

  • 寫座標 

#include <GL/glut.h> ///使用 GLUT外掛

#include <stdio.h> ///為了printf()

void display()

{

    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);///清背景

    glutSolidTeapot(0.3);

    glutSwapBuffers();///更新畫面

}

void mouse( int button, int state,  int x ,  int y )

{                                                  左中右                     上下            x座標        y座標

    printf("button:%d state:%d x:%d y:%d\n",button,state,x,y);

}

int main(int argc, char **argv) ///main()函式

{

    glutInit(&argc, argv);///(1)Inet初始化GLUT

    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);

    glutCreateWindow("08160342 WEEEEE");///(3)建立GLUT視窗

    glutDisplayFunc(display);///(4)準備 display()函式

    glutMouseFunc(mouse); ///註冊mouse函式

    glutMainLoop();///(5)主要函式

}

-------------------------------------------------------------------------

  • 用滑鼠fafa


#include <GL/glut.h> ///使用 GLUT外掛
int N=0,vx[3000],vy[3000];
void display()
{

    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);///清背景

    glBegin(GL_LINE_LOOP);
    for(int i=0;i<N;i++){
            glVertex2f((vx[i]-150)/150.0,-(vy[i]-150)/150.0);
    }                                  減一半再除一半        減一半再除一半 加負號
    glEnd();

    glutSwapBuffers();///更新畫面
}
void motion( int x,int y)
{
    vx[N]=x; vy[N]=y;
    N++;
    display();
}
int main(int argc, char **argv) ///main()函式
{
    glutInit(&argc, argv);///(1)Inet初始化GLUT
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("08160342 WEEEEE");///(3)建立GLUT視窗
    glutDisplayFunc(display);///(4)準備 display()函式

    glutMotionFunc(motion);
    glutMainLoop();///(5)主要函式

}


-------------------------------------------------------------------------


  • 安培


物體旋轉的方向=箭頭方向(安培右手)

X=1.00,Y= 1.00


























2021年6月7日 星期一

電腦圖學 week04

 0. 安裝 桌面

1.1 File-New-

1.2 GItHub 

2. mouse()函式







#include <GL/glut.h>

#include <stdio.h>

void display()

{

    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

    glutSolidTeapot(0.3);

    glutSwapBuffers();

}

void mouse(int button,int state,int x,int y)

{

    printf("botton:%d state:%d x:%d y:%d\n",button,state,x,y);

}

int main(int argc,char ** argv)

{

    glutInit(&argc,argv);

    glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);

    glutCreateWindow("08163034");


    glutDisplayFunc(display);

    glutMouseFunc(mouse);

    glutMainLoop();

}

3.motion()函式







#include <GL/glut.h>

int N=0,vx[3000],vy[3000];

void display()

{

    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);


    glBegin(GL_LINE_LOOP);

    for(int i=0;i<N;i++){

       glVertex2f((vx[i]-150)/150.0,-(vy[i]-150)/150.0);

    }

    glEnd();

    glutSwapBuffers();

}

void motion(int x,int y)

{

    vx[N]=x;vy[N]=y;

    N++;

    display();

}

int main(int argc,char ** argv)

{

    glutInit(&argc,argv);

    glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);

    glutCreateWindow("08163034");


    glutDisplayFunc(display);

    glutMotionFunc(motion);

    glutMainLoop();

}

4. 在2021裡測試 Transformation 






glScalef-X(寬度) Y(高度) Z(長度) 

glRotatef-角度

glTranslatef-XYZ視角



物體旋轉的方向=Y軸向上的方向(安培右手)

Y=1.00


物體旋轉的方向=Y軸向下的方向(安培右手)

Y= -1.00


物體旋轉的方向=箭頭方向(安培右手)

X=1.00,Y= 1.00


2021年4月4日 星期日

銘傳方唐鏡的電腦圖學筆記WEEK04

 今天第一節課老師教我們用滑鼠點一個位置知道座標

程式碼:

#include<GL/glut.h>

#include<stdio.h>///為了printf()出現的 void display() { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glutSolidTeapot(0.3); glutSwapBuffers();///交換兩倍的buffers } void mouse(int button,int state,int x,int y)///這裡是今天新學的程式碼TODO:左鍵、中鍵、右鍵 下、上,x、y座標

{ printf("button: %d state: %d x: %d y: %d\n",button,state,x,y); } int main(int argc, char *argv[]) { glutInit(&argc, argv);///glut初始設定 glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH); glutCreateWindow("08160093"); glutDisplayFunc(display); glutMouseFunc( mouse );///註冊mouse的函式 glutMainLoop();


接下來是做一個類似小畫家可以拿來畫畫
程式碼:
#include <GL/glut.h> int N=0,vx[3000],vy[3000]; void display() { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glBegin(GL_LINE_LOOP); for(int i=0;i<N;i++){ glVertex2f( (vx[i]-150)/150.0,-(vy[i]-150)/150.0); } ///減一半,在除一半 減一半,在除一半,加負號 glEnd(); glutSwapBuffers();///交換兩倍的buffers } void motion (int x ,int y) { ///TODO2: mouse motion 再拖動他 vx[N]=x; vy[N]=y; ///把vx,vy的存起來 N++; display();///邊動mouse motion,邊畫display() } int main(int argc, char *argv[]) { glutInit(&argc, argv); glutInitWindowSize(640,480); glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH); glutCreateWindow("08160830"); glutDisplayFunc(display); glutMotionFunc( motion);///等一下要顯示的函示 glutMainLoop();///TODO :我們註冊mouse函式 }

2021年3月24日 星期三

本人發言不代表本人立場 week04

今日工事:moust motion()

  • 紀錄滑鼠座標

#include <GL/glut.h>
#include <stdio.h>
void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glutSolidTeapot(0.3);
    glutSwapBuffers();
}
void mouse(int button, int state, int x, int y)
{               ////滑鼠左中右鍵////上下///XY座標
    printf("button:%d state:%d x:%d y:%d\n", button,state,x,y);
}
int main(int argc, char *argv[])
{
    glutInit(&argc, argv);///初始化GLUT
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("ME");
    glutDisplayFunc(display);
    glutMouseFunc( mouse);///註冊mouse函式
    glutMainLoop();
}

執行結果: 


  • MotionFunc

#include <GL/glut.h>
int N=0, vx[3000], vy[3000];
void display(){
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glBegin(GL_LINE_LOOP);
    for(int i=0; i<N; i++){
        glVertex2f((vx[i]-150)/150.0, -(vy[i]-150)/150.0);
     }
    glEnd();
    glutSwapBuffers();
}
void motion(int x,int y) {
    vx[N]=x; vy[N]=y; ///把vx,vy的值存起來
    N++;
    display(); 
}
int main(int argc, char *argv[]){
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("ME");
    glutDisplayFunc(display);
    glutMotionFunc(motion); 
    glutMainLoop();
}

執行結果:



  • 旋轉移動縮放
    • 改變移動旋轉,觀察他在旋轉軸不同時的旋轉方向
例如:





2021年3月17日 星期三

懶嵐\(。∀ ° )/ Week04

I.

Step1.

打開上週作業的檔案

Step2.

加上

#include <stdio.h> 要印東西

void mouse(int button,int state,int x,int y) { ///左,中,右,上,下,x座標,y座標 printf("button:%d state:%d x:%d y:%d\n",button,state,x,y); }

main函式裡註冊mouse函式
glutMouseFunc(mouse);


II.


#include <GL/glut.h>///使用GLUT外掛 #include <math.h>///使用數學外掛 #include <stdio.h>///因為要printf int N=0,vx[3000],vy[3000]; void display(void) { glClear(GL_COLOR_BUFFER_BIT| GL_DEPTH_BUFFER_BIT);///清空 glBegin(GL_LINE_STRIP); for(int i=0;i<N;i++){ glVertex2f((vx[i]-150)/150.0,-(vy[i]-150)/150.0); } ///減一半 除一半 glEnd(); glutSwapBuffers(); } void motion(int x,int y) { ///左,中,右,上,下,x座標,y座標 vx[N]=x; vy[N]=y; N++; display(); } int main(int argc, char *argv[ ])///main()函式 { glutInit(&argc, argv);///(1)Init初始化GLUT glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);///(2)Init初始化 Display 的功能 glutCreateWindow("08160280 蔡承泰");///(3)建立GLUT視窗 glutDisplayFunc(display);///(4)準備display()函式 glutMotionFunc(motion);///註冊motion函式 glutMainLoop();///(5)主要程式







築損 Week04

 第四周

把上星期的檔案複製貼上

#include <GL/glut.h>///使用GLUT外掛 #include <math.h>///使用數學外掛 #include <stdio.h>///因為要printf static void display(void) void mouse(int button,int state,int x,int y) { ///左,中,右,上,下,x座標,y座標 printf("button:%d state:%d x:%d y:%d\n",button,state,x,y); } int main(int argc, char *argv[])///main()函式 { glutInit(&argc, argv);///(1)Init初始化GLUT glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);///(2)Init初始化 Display 的功能 glutCreateWindow("08160075 吳英昭");///(3)建立GLUT視窗 glutDisplayFunc(display);///(4)準備display()函式 glutMouseFunc(mouse);///註冊mouse函式 glutMainLoop();///(5)主要程式 }









執行結果

-------------------------------------------------------------------------------------------------------------------

第二部分

#include <GL/glut.h>///使用GLUT外掛 #include <math.h>///使用數學外掛 #include <stdio.h>///因為要printf int N=0,vx[3000],vy[3000]; void display(void) { glClear(GL_COLOR_BUFFER_BIT| GL_DEPTH_BUFFER_BIT);///清空 glBegin(GL_LINE_STRIP); for(int i=0;i<N;i++){ glVertex2f((vx[i]-150)/150.0,-(vy[i]-150)/150.0); } ///減一半 除一半 glEnd(); glutSwapBuffers(); } void motion(int x,int y) { ///左,中,右,上,下,x座標,y座標 vx[N]=x; vy[N]=y; N++; display(); } int main(int argc, char *argv[])///main()函式 { glutInit(&argc, argv);///(1)Init初始化GLUT glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);///(2)Init初始化 Display 的功能 glutCreateWindow("08160075 吳英昭");///(3)建立GLUT視窗 glutDisplayFunc(display);///(4)準備display()函式 glutMotionFunc(motion);///註冊motion函式 glutMainLoop();///(5)主要程式
















執行結果



----------------------------------------------------------------------------------------------------------------------------

第三部分

glRotatef(旋轉角度,x軸,y軸,z軸)

負的數值為順時針以y為軸心



正的數值為逆時針 以y為軸心


執行結果




-----------------------------------------------------------------------------------------------------------------------------

第四部份


執行結果


-----------------------------------------------------------------------------------------------------------------------------第五部分


執行結果


-----------------------------------------------------------------------------------------------------------------------------


距地表面160 Week11

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