第五周
第1部份
打開transfrom.exe(1)(2)右下角切換第一行跟第二行
glTranslatef(x,y,z) 移動
glRotatef(x,y,z) 旋轉
glScalef(x,y,z) 物體大小(3)
把第一第二行交換(4)
想成圓盤轉動 先放到旁邊再進行旋轉 會有繞圈的感覺
執行結果
1
2
3
4
-----------------------------------------------------------------------------------------------------------------------------
第2部份
把上週畫圖程式打開
程式碼
#include <GL/glut.h>///使用GLUT外掛
#include <math.h>///使用數學外掛
#include <stdio.h>///因為要printf
int N=0,vx[3000],vy[3000];
float angle=0;///角度
void display(void)
{
glClear(GL_COLOR_BUFFER_BIT| GL_DEPTH_BUFFER_BIT);///清空
glPushMatrix();///備份矩陣
glRotatef(angle,0,0,1);///旋轉對z軸旋轉
glBegin(GL_LINE_LOOP);
for(int i=0;i<N;i++){
glVertex2f((vx[i]-150)/150.0,-(vy[i]-150)/150.0);
} ///減一半 除一半
glEnd();
glPopMatrix();///還原矩陣
glutSwapBuffers();
}
void keyboard(unsigned char key, int x,int y)
{
angle++;///TODO
display();
}
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()函式
glutKeyboardFunc(keyboard);///按按鍵才會動
glutMotionFunc(motion);///註冊motion函式
glutMainLoop();///(5)主要程式
}
執行結果
-----------------------------------------------------------------------------------------------------------------------------
第3部份
執行結果
-----------------------------------------------------------------------------------------------------------------------------
https://120.125.80.50/GL
期中考題
沒有留言:
張貼留言