2017電腦圖學 Computer Graphics 授課教師: 葉正聖 銘傳大學資訊傳播工程系 每週主題: 程式環境、點線面顏色、移動/旋轉/縮放與矩陣(Matrix)、階層性關節轉動(T-R-T)、做出機器人、打光、貼圖、glu/glut函式、鍵盤、滑鼠、計時器(timer)、讀入3D模型、粒子系統、聲音、特效、投影矩陣、攝影機與運鏡、機器人2.0、期末作品
2017年6月30日 星期五
2017年5月22日 星期一
WEEK 12 CheXi
2017年5月15日 星期一
WEEK 11 CheXi
1.講解小考
glPushMartix(); 10%
glTranslatef(0.4,0.5,0); (3) 20%
glRotatef(30,0,0,1); (2) 20%
glTranslatef(+0.5,+0.3,0); (1) 20%
glArm(); 20%
glPopMartix(); 10%
2.讀圖檔
用OpenCV 2.1
glPushMartix(); 10%
glTranslatef(0.4,0.5,0); (3) 20%
glRotatef(30,0,0,1); (2) 20%
glTranslatef(+0.5,+0.3,0); (1) 20%
glArm(); 20%
glPopMartix(); 10%
2.讀圖檔
用OpenCV 2.1
2017年5月8日 星期一
WEEK 10 CheXi
2017年5月1日 星期一
2017年4月24日 星期一
WEEK 8 CheXi
2017年4月17日 星期一
WEEK 6 Chexi
2017年3月27日 星期一
WEEK 5 CheXi
1.期中考題 (練習10題)

2.下載 (1)windows (2)data (3)gult32.dll
開啟Transformation
改變Rotate的數值
用右手安培定理來看車子旋轉的角度
glrotatef(角度,X,Y,Z) → 竹籤插的方向
`
口訣 1.負負得正

glRotatef(-90,0.00,-1.00,0.00)

glRotatef (90,0.00,1.00,0.00)
兩者圖相同
口訣 2.左耳碰左肩,由下往上讀,畫圈圈
3.考試內容

2.下載 (1)windows (2)data (3)gult32.dll
開啟Transformation
改變Rotate的數值
用右手安培定理來看車子旋轉的角度
glrotatef(角度,X,Y,Z) → 竹籤插的方向
`口訣 1.負負得正

glRotatef(-90,0.00,-1.00,0.00)

glRotatef (90,0.00,1.00,0.00)
兩者圖相同
口訣 2.左耳碰左肩,由下往上讀,畫圈圈
3.考試內容
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(); //還原矩陣
2017年3月20日 星期一
WEEK 4 CheXi
2017年3月13日 星期一
WEEK 3 CheXi
1.複習茶壺

2.得到滑鼠座標
程式碼:
#include <math.h>
#include <stdio.h>
#include <GL/glut.h>
void mouse(int button, int state, int x, int y)
{
printf("%d %d %d %d\n", button,state,x,y);
}
void display()
{
glutSolidTeapot(0.3);
glutSwapBuffers();
}
int main(int argc, char*argv[])
{
glutInit( &argc,argv);
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("04160674 Number1");
glutDisplayFunc(display);
glutMouseFunc(mouse);
glutMainLoop();
}

3.改變顏色
程式碼:
#include <math.h>
#include <stdio.h>
#include <GL/glut.h>
void display()
{
glutSolidTeapot(0.3);
glutSwapBuffers();
}
void mouse(int button, int state, int x, int y)
{
printf("%d %d %d %d\n", button,state,x,y);
glColor3f(1, x/300.0, y/300.0);
glutPostRedisplay();
}
int main(int argc, char*argv[])
{
glutInit( &argc,argv);
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("04160674 Number1");
glutDisplayFunc(display);
glutMouseFunc(mouse);
glutMainLoop();
}


5.圓形
程式碼:
#include <math.h>
#include <stdio.h>
#include <GL/glut.h>
void motion(int x,int y)
{
glColor3f(1,x/500.0,y/500.0);
glutPostRedisplay();
}
void mouse(int button, int state, int x, int y)
{
if(state==GLUT_DOWN) printf("glVertex2f(%.2f,%.2f);\n",(x-250)/250.0,-(y-250)/250.0);
}
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glBegin(GL_POLYGON);
for(float angle=0; angle<3.1415926*2; angle+=0.001){
glVertex2f(cos(angle),sin(angle));
}
glEnd();
glutSwapBuffers();
}
int main(int argc, char*argv[])
{
glutInit( &argc,argv);
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
glutInitWindowSize(500,500);
glutCreateWindow("04160674 Number1");
glutDisplayFunc(display);
glutMouseFunc(mouse);
glutMotionFunc(motion);
glutMainLoop();
}

2.得到滑鼠座標
程式碼:
#include <math.h>
#include <stdio.h>
#include <GL/glut.h>
void mouse(int button, int state, int x, int y)
{
printf("%d %d %d %d\n", button,state,x,y);
}
void display()
{
glutSolidTeapot(0.3);
glutSwapBuffers();
}
int main(int argc, char*argv[])
{
glutInit( &argc,argv);
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("04160674 Number1");
glutDisplayFunc(display);
glutMouseFunc(mouse);
glutMainLoop();
}

3.改變顏色
程式碼:
#include <math.h>
#include <stdio.h>
#include <GL/glut.h>
void display()
{
glutSolidTeapot(0.3);
glutSwapBuffers();
}
void mouse(int button, int state, int x, int y)
{
printf("%d %d %d %d\n", button,state,x,y);
glColor3f(1, x/300.0, y/300.0);
glutPostRedisplay();
}
int main(int argc, char*argv[])
{
glutInit( &argc,argv);
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("04160674 Number1");
glutDisplayFunc(display);
glutMouseFunc(mouse);
glutMainLoop();
}

4.滑鼠拖曳變顏色
程式碼:
#include <math.h>
#include <stdio.h>
#include <GL/glut.h>
void mouse(int button, int state, int x, int y)
{
printf("%d %d %d %d\n", button,state,x,y);
}
void motion(int x,int y)
{
printf("%d %d\n",x,y);
glColor3f(1,x/500.0,y/500.0);
glutPostRedisplay();
}
void display()
{
glutSolidTeapot(0.3);
glutSwapBuffers();
}
int main(int argc, char*argv[])
{
glutInit( &argc,argv);
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
glutInitWindowSize(500,500);
glutCreateWindow("04160674 Number1");
glutDisplayFunc(display);
glutMouseFunc(mouse);
glutMotionFunc(motion);
glutMainLoop();
}
#include <math.h>
#include <stdio.h>
#include <GL/glut.h>
void mouse(int button, int state, int x, int y)
{
printf("%d %d %d %d\n", button,state,x,y);
}
void motion(int x,int y)
{
printf("%d %d\n",x,y);
glColor3f(1,x/500.0,y/500.0);
glutPostRedisplay();
}
void display()
{
glutSolidTeapot(0.3);
glutSwapBuffers();
}
int main(int argc, char*argv[])
{
glutInit( &argc,argv);
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
glutInitWindowSize(500,500);
glutCreateWindow("04160674 Number1");
glutDisplayFunc(display);
glutMouseFunc(mouse);
glutMotionFunc(motion);
glutMainLoop();
}

5.圓形
程式碼:
#include <math.h>
#include <stdio.h>
#include <GL/glut.h>
void motion(int x,int y)
{
glColor3f(1,x/500.0,y/500.0);
glutPostRedisplay();
}
void mouse(int button, int state, int x, int y)
{
if(state==GLUT_DOWN) printf("glVertex2f(%.2f,%.2f);\n",(x-250)/250.0,-(y-250)/250.0);
}
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glBegin(GL_POLYGON);
for(float angle=0; angle<3.1415926*2; angle+=0.001){
glVertex2f(cos(angle),sin(angle));
}
glEnd();
glutSwapBuffers();
}
int main(int argc, char*argv[])
{
glutInit( &argc,argv);
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
glutInitWindowSize(500,500);
glutCreateWindow("04160674 Number1");
glutDisplayFunc(display);
glutMouseFunc(mouse);
glutMotionFunc(motion);
glutMainLoop();
}
2017年3月6日 星期一
WEEK 2 CheXi
2017年2月20日 星期一
WEEK 1 CheXi
訂閱:
文章 (Atom)














































