2021年3月22日 星期一

橘貓(電圖小筆記_week05)

接續上週最後的車子的旋轉,今天要來看看自轉跟公轉的差別

1.自轉變公轉

2.使用滑鼠畫圖!

3.期中考練習整理

自轉變公轉💣

glTranslatef(車子的大小)與glRotatef(旋轉的角度)互換之後會從自轉公轉

自轉


這裡順序都是未更動的

公轉

互換之後會跟著中心做公轉
紅線代表中心

OpenGL中是由下往上讀資料的,為了不讓電腦計算過多資料
將每筆資料存入二維陣列,最後在一次做計算.

使用滑鼠畫圖!

(請無視畫質謝謝💓)

(所有的程式碼都在最下方,歡迎參考)
main程式碼是接續上次的函數,在此解釋跟上次不同的部分

首先要要先宣告存放位置的陣列

    float X[2000],Y[2000];
    int P;//有P個頂點

接著display函式中畫出指定的頂點

static void display()
{
    glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
    glBegin(GL_LINE_LOOP);//迴圈
    for(int i=0;i<P;i++){
        glVertex2f(X[i],Y[i]);//紀錄點的位置
    }
    glEnd();
    glutSwapBuffers();
}

使用 motion函式呼叫display函式去紀錄點的位置

void motion(int x,int y)
{
    X[P]=(x-150)/150.0;
    Y[P]=-(y-150)/150.0;
    P++;
    display();///呼叫display函式
}
最後可以在display函式中更改glBegin(GL_LINE_LOOP)
將GL_LINE_LOOP改成其他指令可以更改圖形構成
1.GL_POLYGON
圖形變成實心的了!酷


2.GL_TRIANGLE_FAN
    for迴圈之前必須加一個glVertex2f(0,0)中心點
    
實心的白色風扇

期中考練習整理

重要的11個函式
1.glPushMatrix();//備份矩陣
2.glTranslatef(angle,x,y);//移動
3.glRotatef(angle,x,y,z);//轉動
4.glScalef(x,y,z);//縮放
5.glBegin(GL_POLYGON);//開始畫
6.glColor3f(r,g,b);//顏色
7.glTexCoord2f(tx,ty);//貼圖座標
8.glNormal3f(nx,ny,nz);//打光的法向量
9.glVertex3f(x,y,z);//頂點
10.glEnd();//結束畫
11.glPopMatrix();//還原矩陣
要在部落格中貼上程式碼,要使用gist.github.com,creat→embed(右上方)→按下複製
程式碼在下方👇




沒有留言:

張貼留言

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

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