一、程式移動圖片
程式
加入
float mouseX=0,mouseY=0; ///變數
static void display(void)
{
glPushMatrix();///備份形狀
glTranslated(mouseX,mouseY,0);///移動
glPopMatrix();///恢復形狀
}
二、使用滑鼠移動圖片
程式
改變
static void display(void)
{
glTranslated(mouseX,mouseY,0);///移動
}
加入
void motion(int x,int y)
{
mouseX=(x-150)/150.0;
mouseY=-(y-150)/150.0;
glutPostRedisplay();
}
三、使用滑鼠改變圖片大小
程式
按住左鍵左右移動,改變大小。
改變
static void display(void)
{
glScalef(mouseX,mouseY,0);
}
2017電腦圖學 Computer Graphics 授課教師: 葉正聖 銘傳大學資訊傳播工程系 每週主題: 程式環境、點線面顏色、移動/旋轉/縮放與矩陣(Matrix)、階層性關節轉動(T-R-T)、做出機器人、打光、貼圖、glu/glut函式、鍵盤、滑鼠、計時器(timer)、讀入3D模型、粒子系統、聲音、特效、投影矩陣、攝影機與運鏡、機器人2.0、期末作品
2017年7月1日 星期六
2017年4月10日 星期一
week 05 楊語琛的上課筆記 レ(゚∀゚;)ヘ=З=З=З
1.說明期中考內容
大小寫要正確
glPushMatrix();//備份矩陣 10% (stack push)
glRotatef(angle, x, y, z);//旋轉 30%
glTranslatef(x,y,z);/移動 40%
glScalef(x,y,z);//縮放 50%
glBegin(GL_POLYGON);//開始畫 60%
glNormal3f(nx,ny,ny);//打光的法向量 90%
glTexCoord2f(tx,ty);//貼圖的座標 100%
glColor3f(r,g,b);// 顏色 70%
glVertex3f(x,y,z);//頂點 80%
glEnd();//結束畫(與開始畫共同算分)
glPopMatrix();//還原矩陣 20% (stack pop)
2.
下載win32、data、glut32.dll
開啟windows資料夾下的Transform
利用 glTranslatef()控制移動
利用 glScalef()控制大小
大小寫要正確
glPushMatrix();//備份矩陣 10% (stack push)
glRotatef(angle, x, y, z);//旋轉 30%
glTranslatef(x,y,z);/移動 40%
glScalef(x,y,z);//縮放 50%
glBegin(GL_POLYGON);//開始畫 60%
glNormal3f(nx,ny,ny);//打光的法向量 90%
glTexCoord2f(tx,ty);//貼圖的座標 100%
glColor3f(r,g,b);// 顏色 70%
glVertex3f(x,y,z);//頂點 80%
glEnd();//結束畫(與開始畫共同算分)
glPopMatrix();//還原矩陣 20% (stack pop)
2.
下載win32、data、glut32.dll
開啟windows資料夾下的Transform
利用 glTranslatef()控制移動
利用 glScalef()控制大小
2017年4月9日 星期日
Week 05 一權的上課筆記
(1)期中考題介紹
glPushMatrix();//備份矩陣
glRotatef(angle, x, y, z);//旋轉
glTranslatef(x,y,z);//移動
glScalef(x,y,z);//縮放
glBegin(GL_POLYGON);//開始畫
glNormal3f(nx,ny,nz);//打光的法向量
glTexCoord2f(tx,ty);//貼圖的座標
glColor3f(r,g,b);//顏色
glVertex3f(x,y,z);//頂點
glEnd();//結束畫
glPopMatrix();//還原矩陣
&
好的履歷寫法
(2)主題:階層轉動 ★
1.
[ 訣竅 ]
1*右手安培定則
2*想像竹籤插著物品旋轉
glTranslatef(x,y,z);
glRotate(n旋轉度數,x,y,z)
2.
P.S:物件位於旁邊自體旋轉
程式碼:
glTranslatef(x,y,z);
glRotate(angle,x,y,z);
glScalef(x,y,z);
glBengin();
3.
P.S
公轉
程式碼:
glRotate(angle,x,y,z);
glTranslatef(x,y,z);
glScalef(x,y,z);
glBengin();
(3)實作:Y-R-T ★
(4)複習:glPushMatrix();glPopMatrix()
(5)期末作品
(6)回家作業
glPushMatrix();//備份矩陣
glRotatef(angle, x, y, z);//旋轉
glTranslatef(x,y,z);//移動
glScalef(x,y,z);//縮放
glBegin(GL_POLYGON);//開始畫
glNormal3f(nx,ny,nz);//打光的法向量
glTexCoord2f(tx,ty);//貼圖的座標
glColor3f(r,g,b);//顏色
glVertex3f(x,y,z);//頂點
glEnd();//結束畫
glPopMatrix();//還原矩陣
&
好的履歷寫法
(2)主題:階層轉動 ★
1.
[ 訣竅 ]
1*右手安培定則
2*想像竹籤插著物品旋轉
glTranslatef(x,y,z);
glRotate(n旋轉度數,x,y,z)
2.
P.S:物件位於旁邊自體旋轉
程式碼:
glTranslatef(x,y,z);
glRotate(angle,x,y,z);
glScalef(x,y,z);
glBengin();
3.
P.S
公轉
程式碼:
glRotate(angle,x,y,z);
glTranslatef(x,y,z);
glScalef(x,y,z);
glBengin();
(3)實作:Y-R-T ★
(4)複習:glPushMatrix();glPopMatrix()
(5)期末作品
(6)回家作業
2017年3月27日 星期一
Week 5 P.L 課堂筆記
One. 移動 (Translate)
#include <GL/glut.h>
float mouseX=0 , mouseY=0;
void display(){
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glPushMatrix();///back up the Matrix.
glTranslatef(mouseX,mouseY,0);
glutSolidTeapot(0.3);
glPopMatrix();
glutSwapBuffers();
}
void motion(int x,int y)
{
mouseX = (x-150)/150.0;
mouseY = -(y-150)/150.0;
glutPostRedisplay();
}
int main(int argc, char **argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("Rotate / Translate / Scale");
glutDisplayFunc(display);
//glutMouseFunc(mouse);
glutMotionFunc(motion);
glutMainLoop();
}
Week05陳冠霖的上課筆記
本周課程:
期中考考介紹:
glPushMatrix();//備份矩陣
glRotatef(angle,x,y,z);//旋轉
glTranslatef(x,y,z);//移動
glScalef(x,y,z);//縮放
glBeing(GL_POLYGON);//畫圖多邊形
glTexCoord2f(tx,ty);//貼圖座標
glNormal3f(nx,ny,nz);//打光的法向量
glColor3f(r,g,b);//顏色
glVertex3f(x,y,z);//頂點
glEnd();//結束畫多邊形
glPopMatrix();//還原矩陣
注意:大小寫要正確,還有有些要記得寫參數有幾個
注意:大小寫要正確,還有有些要記得寫參數有幾個
辨別轉動方向(可以用手比幫助辨識)
X:往右,-X:往左
Y:往上,-Y:往下
Z:往前,-Z:往後
90度:順手指方向旋轉
-90度反手指旋轉
大拇指:X或Y或Z的方向
其他手指:東西旋轉的方向
glRotatef(90,1,0,0);//glRotatef(angle,x,y,z)
angle:旋轉角度
x;座標
y;座標
z;座標
angle:旋轉角度
x;座標
y;座標
z;座標
如果有負負能得正,這樣的結果跟正的一樣
glRotatef(-90,0,-1,0);==glRotatef(90,0,1,0);
glRotatef(90,1,1,0)
手指往斜上指,往正旋轉
旋轉加移動的效果(前後擺的程式不一樣,得到不一樣的效果)
glRotatef(angle,x,y,z);~~~旋轉
glTranSlatef(x,y,z);~~~移動
我的想法:程式碼從上到下來看,先產生圓盤,然後有個東西移動到圓盤上,跟著圓盤旋轉,造成有車子在移動的效果。
老師的教法:程式碼從後面開始看。
glTranSlatef(x,y,z);~~~移動
glRotatef(angle,x,y,z);~~~旋轉
我的想法:程式碼從上到下來看,先產生東西移動了,再來生產圓盤,而圓盤產生的中心軸在東西上,造成東西有旋轉的效果。
老師的教法:程式碼從後面開始看。
glRotatef(angle,x,y,z);~~~旋轉
我的想法:程式碼從上到下來看,先產生東西移動了,再來生產圓盤,而圓盤產生的中心軸在東西上,造成東西有旋轉的效果。
老師的教法:程式碼從後面開始看。
[電腦圖學]Week05 松賢的上課筆記
本週主題:
(1.)期中考題介紹
(2.)主題: 階層轉動
(3.)實作: T-R-T
(4.)複習Push Matrix、Pop Matrix
(5.)期末作品demo
1.期中考題介紹
配分說明
2.初始化程式以及階層矩陣
Step1: 請至小葉老師網站(點我前往)下載win32、data、glut32.dll,解壓縮步驟跟之前上課一樣,不再做說明
Step2: 開啟windows資料夾下的Transform,執行它,如未能正確執行請參閱上上週的安裝說明
Step3: 自己動手玩glRotatef裡的參數。第一個參數為旋轉的角度、第二至第四個角度則是延x,y,z軸來旋轉(y軸可以用安培右手定則來判斷)。
![]() |
| 如圖,我把三軸調整成(1,1,0),即想像以(1,1,0)為軸心,來旋轉車子的模型。 |
Step4: 重點!! 請搞清楚glRotatef()以及glTranslatef()的先後關係,這會影響到「先旋轉,後移動」還是「先移動,在旋轉」的認知。
王華偉的上課筆記 0327 Week05
1.公布期中考考題
負負得正 若glRotatef(-90.0, 0.00, -1.00, 0.00)時,會與glRotatef(90.0, 0.00, 1.00, 0.00)一模一
樣。
口訣: 左耳碰左肩, 從下往上讀, 畫圈圈
glPushMatrix(); //備份矩陣
glTranslatef(x, y, z); //移動
glRotatef(角度, x, y, z); //旋轉
glScalef(x, y, z); //縮放
glBegin(GL_POLYON); //開始
glcolor3f(r, g, b); //顏色
glNormal3f(nx, ny, nz); //法向量
glTexcoord3f(tx, ty); //貼圖座標
glVertex3f(x, y ,z); //頂點
glEnd(); //結束畫
glPopMatrix(); //還原Matrix
2.開啟老師給的檔案
不知道為甚麼,用滑鼠拉角度的時候,都會慢和鈍
原來是要上下拉,不是左右,不知道為什麼這樣設定。
負負得正 若glRotatef(-90.0, 0.00, -1.00, 0.00)時,會與glRotatef(90.0, 0.00, 1.00, 0.00)一模一
樣。
口訣: 左耳碰左肩, 從下往上讀, 畫圈圈
glPushMatrix(); //備份矩陣
glTranslatef(x, y, z); //移動
glRotatef(角度, x, y, z); //旋轉
glScalef(x, y, z); //縮放
glBegin(GL_POLYON); //開始
glcolor3f(r, g, b); //顏色
glNormal3f(nx, ny, nz); //法向量
glTexcoord3f(tx, ty); //貼圖座標
glVertex3f(x, y ,z); //頂點
glEnd(); //結束畫
glPopMatrix(); //還原Matrix
Week05 浩丁洲街的上課筆記
期中考題介紹:
(1). 練習10題 100%

(2). 網址: jsyeh.org/3dcg10 裡面載<1>. data.zip <2>. windows.zip <3>. glut32.dll
放入windows 文件夾裡面,打開Transformation.exe
嘗試著用右手來看車子的旋轉(右手安培定則)

(3). 負負得正 若glRotatef(-90.0, 0.00, -1.00, 0.00)時,會與glRotatef(90.0, 0.00, 1.00, 0.00)一模一
樣。
(4). 口訣: 左耳碰左肩, 從下往上讀, 畫圈圈
glPushMatrix(); //備份矩陣
glTranslatef(x, y, z); //移動
glRotatef(角度, x, y, z); //旋轉
glScalef(x, y, z); //縮放
glBegin(GL_POLYON); //開始
glcolor3f(r, g, b); //顏色
glNormal3f(nx, ny, nz); //法向量
glTexcoord3f(tx, ty); //貼圖座標
glVertex3f(x, y ,z); //頂點
glEnd(); //結束畫
glPopMatrix(); //還原Matrix
(1). 練習10題 100%

(2). 網址: jsyeh.org/3dcg10 裡面載<1>. data.zip <2>. windows.zip <3>. glut32.dll
放入windows 文件夾裡面,打開Transformation.exe
嘗試著用右手來看車子的旋轉(右手安培定則)
(3). 負負得正 若glRotatef(-90.0, 0.00, -1.00, 0.00)時,會與glRotatef(90.0, 0.00, 1.00, 0.00)一模一
樣。
(4). 口訣: 左耳碰左肩, 從下往上讀, 畫圈圈
glPushMatrix(); //備份矩陣
glTranslatef(x, y, z); //移動
glRotatef(角度, x, y, z); //旋轉
glScalef(x, y, z); //縮放
glBegin(GL_POLYON); //開始
glcolor3f(r, g, b); //顏色
glNormal3f(nx, ny, nz); //法向量
glTexcoord3f(tx, ty); //貼圖座標
glVertex3f(x, y ,z); //頂點
glEnd(); //結束畫
glPopMatrix(); //還原Matrix
week 05 陶軒宇 課堂筆記
課堂作業一
期末考十題複習
課堂作業二
glRotatef(角度,x,y,z);
練習
glRotatef(37,0,1,0);
根據安培右手定律拇指指向y軸
車逆時鐘旋轉
glRotatef(64,1,1,0);
根據安培右手定律拇指指向x,y軸45度角
車向右下旋轉
課堂作業三
移動加旋轉
口訣:左耳碰左肩,從下往上讀,畫圈圈
先做旋轉再做移動,所以此圖為會旋轉的車被移動到右方
轉動角度呈現:
旋轉和移動作調換
由下往上解釋:
會移動的車做旋轉
轉動角度呈現:
笔记week05 郭羽
1.練習期中試題100%
glPushMatrix(); //備份矩陣 10%2. 下載圖學的教學軟件(略)
glRotatef(angle, x, y, z); //旋轉
glTranslatef(x, y, z);//移動
glScalef(x, y, z); //縮放
glBegin(GL_POLYGON); //開始畫
glNormal3f(nx, ny, nz); //打光的法向量
glTexCoord2f(tx, ty); //貼圖的坐標
glColor3f(r, g, b); //顏色
glVertex3f(x, y, z); //頂點
glEnd(); //結束畫
glPopMatrix(); //還原矩陣
3. 學習旋轉glRotatef(angle, x, y, z)
arguments:
angle:旋轉角度。默認正角度為逆時針旋轉,負角度為順時針旋轉。(正視)當x, y, z為0時,控制angle變化時為側向旋轉。
x:控制上下旋轉。當angle遞增時,x值為正向上旋轉(右視圖為逆時針),x值為負向下旋轉(右視圖為順時針)。
y:控制側向旋轉。當angle遞增時,y值為正向右旋轉(上方透視為逆時針),y值為負向左旋轉(上方透視為順時針)。
z:控制正向旋轉。當angle遞增時,z值為正正視逆時針旋轉,z值為負正視順時針旋轉。
4. 口訣
左耳碰左肩,從下往上讀,畫圈圈。
Week 05 林憶蓮的上課筆記
1.期中考介紹
(1)練習十題 100%
(2)打上網址: jsyeh.org/org/3dcg10 知道x,y,z的軸以及會轉動的方向
下載
data.zip >>桌面\windows\data\3D模型
windows.zip>>桌面\windows\Transformation.exe (試試不同轉軸)
glut32.dll>>桌面\windows\glut32.dll
glPushMatrix(); //備份矩陣 (stack push)
(1)練習十題 100%
(2)打上網址: jsyeh.org/org/3dcg10 知道x,y,z的軸以及會轉動的方向
下載
data.zip >>桌面\windows\data\3D模型
windows.zip>>桌面\windows\Transformation.exe (試試不同轉軸)
glut32.dll>>桌面\windows\glut32.dll
↑↑竹籤插的方向使用國中學的法向量↓↓
I 假設為竹籤插的方向
手掌彎起來的方向 B 就是旋轉的方向
(3)考試的部分
---------------------------------------------------------------------------------------------------------------------
glPushMatrix(); //備份矩陣 (stack push)
glRotatef(angle,x,y,z); //旋轉
glTranslatef(x,y,z); //移動
glScalef(x,y,z); //縮放
glBegin(GL_POLYGON); //開始
glNormal3f(nx,ny,nz); //打光的法向量
glTexCoord2f(tx,ty); //貼圖的座標
glColor3f(r,g,b); //顏色
glVertex3f(x,y,z); //頂點
glEnd(); //結束
glPopMatrix(); //還原矩陣 (stack pop)
----------------------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------------------
Week 05 20170327
熟悉轉動
Y軸=-1,順時針(右手拇指往下,其他指為轉動方向)
X軸=1,右手姆指往右,其他指為轉動方向
X軸=-1,右手姆指往左,其他指為轉動方向
Z軸=1,右手拇指指向自己,其他指為轉動方向
Z軸=-1,右手拇指指向面前,其他指為轉動方向
熟悉移動及轉動的混合
先移動後轉動
結果是車子在右邊自轉
先轉動後移動
結果是車子做周轉
訂閱:
文章 (Atom)










































