week05 TRT特定轉軸
先到https://jsyeh.org/3dcg10/下載[data][win32]
到資料夾解壓縮[win32]再把[data]放進去
點開transformation.exe
glTranslate 移動
glRotatef 旋轉
glScalef 長高的
glRotatef 旋轉
glScalef 長高的
T-R:移動旋轉長高藍車
R-T:旋轉移動長高藍車
複習上週的旋轉
[week05-1]
更改glRotatef的數值讓茶壺改變方向旋轉
再加上一個茶壺並更改顏色
還有旋轉的速度跟方向
glColor3f(1,0,0);
glPushMatrix();
glRotatef(angle,0,0,1);
glTranslatef(0.8,0,0);
glutSolidTeapot(0.3);
glPopMatrix();
glColor3f(0,1,0);
glPushMatrix();
glRotatef(angle*1.5,0,0,1);
glTranslatef(0.8,0,0);
glutSolidTeapot(0.3);
glPopMatrix();
打開老師的程式
畫出人跟手臂
步驟
1.先把所有移動得程式碼拉去外面
2.先按 glTranslatef把手臂放進身體正中心點
3.再把 glRotatef放上去讓他旋轉
4.再按glTranslatef把手臂掛在肩膀上就可以了
[week05-2]
打開codeblocks複製前一個程式碼並更改
加入一個正方形的大CUBE
再加入兩個會旋轉的長方形
把手臂移動到方塊的右上角
#include <GL/glut.h>
float angle = 0;
void myCube()
{
glPushMatrix();
glScalef(0.5,0.2,0.2);
glutSolidCube(1);
glPopMatrix();
}
void display()
{
glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glColor3f(1,1,1);
glutSolidCube(1);
glPushMatrix();
glTranslatef(0.5,0.5,0);
glRotatef(angle,0,0,1);
glTranslatef(0.25,0,0);
glColor3f(0,1,0);
myCube();
glPopMatrix();
glPushMatrix();
glTranslatef(-0.5,0.5,0);
glRotatef(angle,0,0,1);
glTranslatef(0.25,0,0);
glColor3f(0,1,0);
myCube();
glPopMatrix();
glutSwapBuffers();
angle++;
}
int main(int argc, char *argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("week05");
glutDisplayFunc(display);
glutIdleFunc(display);
glutMainLoop();
}
這裡







沒有留言:
張貼留言