這周一開始我們先打開transformation.exe
老師教我們transformation.exe裡的各行程式代表的是什麼意思
然後我們到https://120.125.80.50/GL/opengl_TRT_demo.html
我們可以在左邊畫出圖形,然後在右邊調整程式碼的順序
然後按空白鍵就會開始旋轉,可以看到右上角的angle一直在變動
而圖形就會開始轉圈
然後老師講解下周的考試題目
程式碼六行
glPushMatrix();
glTranslatef(-0.5,-0.9,0);
glRotatef(-45,0,0,1);
glTranslatef(-0.8,0.9,0);
gldrawHand();
glPopMatrix();
接著先打開codeblocks
老師先教我們如何讓茶壺原地旋轉
#include <GL/glut.h>
float angle=0;
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glPushMatrix();
glRotatef(angle,0,0,1);
glutSolidTeapot(0.3);
glPopMatrix();
glutSwapBuffers();
angle++;
}
int main(int argc,char** argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_DOUBLE|GLUT_DEPTH);
glutCreateWindow("week12");
glutIdleFunc(display);
glutDisplayFunc(display);
glutMainLoop();
}
再來是要利用T-R-T讓小手臂對任意軸轉動
#include <GL/glut.h>
float angle=0;
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glColor3f(1,1,1);
glutSolidTeapot(0.3);
glPushMatrix();
glTranslatef(0.2,0,0);
glRotatef(angle,0,0,1);
glTranslatef(0.2,0,0);
glColor3f(1,0,0);
glutSolidTeapot(0.2);
glPopMatrix();
glutSwapBuffers();
angle++;
}
int main(int argc,char** argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_DOUBLE|GLUT_DEPTH);
glutCreateWindow("week12");
glutIdleFunc(display);
glutDisplayFunc(display);
glutMainLoop();
}
然後就可以照這個模式畫出更多茶壺
也可以做出左手






沒有留言:
張貼留言