Step01-1
到 https://jsyeh.org/3dcg10/ 下載windows.zip,data.zip
解壓縮到 下載\windows
執行今天的課本範例 Transformation.exe
glTranslatef 移動位置
glRotatef 轉動位置
glScalef 調整大小
glBegin 藍色車
開啟GLUT專案 week05-1_TRT_rotate_translate
把上禮拜的week04-1_rotate程式碼複製貼上
增加為兩個茶壺 一個綠色一個紅色
#include <GL/glut.h>
float angle=0;///step02-2
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glColor3f(0, 1, 0);
glPushMatrix();
glTranslatef(0.8, 0, 0);///最後是綠色的移動
glRotatef(angle, 0, 0, 1);///改對z軸轉
glutSolidTeapot( 0.3 );
glPopMatrix();
glColor3f(1, 0, 0);
glPushMatrix();
glRotatef(angle, 0, 0, 1);
glTranslatef(0.8, 0, 0);
glutSolidTeapot( 0.3 );
glPopMatrix();
glutSwapBuffers();
angle++;
}
int main(int argc, char *argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("week04");
glutDisplayFunc(display);
glutIdleFunc(display);
glutMainLoop();
}
Step02-2
用老師的程式 試著移動畫出來的手臂myDrawObject(0); ///畫出我們的身體與頭
glPushMatrix();
glTranslatef(+0.38, +0.23, 0); //(3) 最後,把會轉動的手臂,掛在肩膀上
glRotatef(angle, 0, 0, 1); //(2) 再世界對z軸轉,手臂擺好後,剛好像關節在轉
glTranslatef(-0.38, -0.23, 0); //(1) 把旋轉中心,放在正中心
myDrawObject(1); //我們要轉動的手臂
glPopMatrix();
Step03-1
老師講解下禮拜考試題目
glPushMatrix();
glTranslatef( -0.5 , -0.9 , 0 ); (3)把轉動的手肘放到正確的位置
glRotate( -45 , 0 , 0 , 1 ); (2)注意正負號及轉動軸
glTranslatef( -0.8 , 0.9 , 0 ); (1)把手肘中心放到畫面中心
drawHand();
glPopMatrix();
Step03-2
新開GLUT專案 week05-2_TRT_robot
畫出大身體、手臂
///week05-2程式來自week05-1
///畫出大身體、手臂
#include <GL/glut.h>
float angle=0;///step02-2
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glColor3f(0, 1, 0);
glPushMatrix();
glutSolidCube(0.5);
glPushMatrix();
glTranslatef(0.25, 0.25, 0);///(3)掛在右上角
glRotatef(angle, 0, 0, 1);///(2)轉動
glTranslatef(0.25, 0.25, 0);///(1)把旋轉中心放到中心
///glTranslatef(0.5, 0.5, 0);///step03-3先註解掉
glColor3f(1, 0, 0);///紅色的手臂
glutSolidCube(0.5);
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();
}





沒有留言:
張貼留言