接續上週最後的車子的旋轉,今天要來看看自轉跟公轉的差別
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();//還原矩陣










沒有留言:
張貼留言