=========================================================================
FIFTH
一、老師帶大家載資料,呈現車子的模型,並解釋物體的旋轉、移動、體積變化
老師的網站網址(https://jsyeh.org/3dcg10/)
1.下載二個檔案:data.zip、win32
2.將data.zip中的data拉到windows.zip並執行解壓縮Transformation.exe
4.將glRotatef()、glTranslatef()做交換,並觀察其變化,此時的轉動是公轉(繞著中心轉動)
二、特定軸轉動,對Z軸做旋轉
1.開啟GLUT專案,並且命名為Week05-1_TRT_rotate_translate3.綠色是自轉,紅色則是公轉
以下為上方的程式碼#include <GL/glut.h>float angle = 0;void display(){ glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
glColor3f(0,1,0);///綠色 glPushMatrix(); glTranslatef(0.8,0,0);///Translate在Rotate上面 glRotatef(angle, 0, 0, 1); glutSolidTeapot( 0.3 ); glPopMatrix();
glColor3f(1,0,0);///紅色 glPushMatrix(); glRotatef(angle, 0, 0, 1); glTranslatef(0.8,0,0);///Translate在Rotate下面 glutSolidTeapot( 0.3 ); glPopMatrix();
glutSwapBuffers(); angle++;}int main(int argc, char* argv[] ){ glutInit(&argc, argv); glutInitDisplayMode(GLUT_RGB|GLUT_DOUBLE|GLUT_DEPTH); glutCreateWindow("week03");
glutDisplayFunc(display); glutIdleFunc(display); glutMainLoop();}
4.要先將手臂的中心點拉好最後再將glPushMatrix()下方的程式碼變成TRT(translate、rotate、translate)
三、講解考試題目,機器人手臂的轉動
1.下禮拜考試的題目(從下往上看程式碼) (1)把手肘中心,放到世界中心,所以要將最初座標點都加上負號
(2)轉動要小心正負號、轉動軸
(3)把轉動的手肘放到正確的位置
void display(){ glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
glColor3f(0,1,0);///綠色的身體 glPushMatrix(); glutSolidCube( 0.5 );
glPushMatrix(); glTranslatef(0.5,0.5,0); glColor3f(1,0,0); glutSolidCube(0.5); glPopMatrix();
glPopMatrix();
glutSwapBuffers(); angle++;}
glTranslatef(0.25,0.25,0);///3.把整個東西掛到右上角 glRotatef(angle,0,0,1); ///2.轉動 glTranslatef(0.25,0.25,0);///1.把旋轉中心,放到中心
以下為上方的程式碼#include <GL/glut.h>float angle = 0;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.把旋轉中心,放到中心 glColor3f(1,0,0); glutSolidCube(0.5); glPopMatrix();
glPopMatrix();
glutSwapBuffers(); angle++;}int main(int argc, char* argv[] ){ glutInit(&argc, argv); glutInitDisplayMode(GLUT_RGB|GLUT_DOUBLE|GLUT_DEPTH); glutCreateWindow("week03");
glutDisplayFunc(display); glutIdleFunc(display); glutMainLoop();}
#include <GL/glut.h>
float angle = 0;
void display()
{
glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
glColor3f(0,1,0);///綠色
glPushMatrix();
glTranslatef(0.8,0,0);///Translate在Rotate上面
glRotatef(angle, 0, 0, 1);
glutSolidTeapot( 0.3 );
glPopMatrix();
glColor3f(1,0,0);///紅色
glPushMatrix();
glRotatef(angle, 0, 0, 1);
glTranslatef(0.8,0,0);///Translate在Rotate下面
glutSolidTeapot( 0.3 );
glPopMatrix();
glutSwapBuffers();
angle++;
}
int main(int argc, char* argv[] )
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB|GLUT_DOUBLE|GLUT_DEPTH);
glutCreateWindow("week03");
glutDisplayFunc(display);
glutIdleFunc(display);
glutMainLoop();
}
4.要先將手臂的中心點拉好最後再將glPushMatrix()下方的程式碼變成TRT(translate、rotate、translate)
三、講解考試題目,機器人手臂的轉動
1.下禮拜考試的題目(從下往上看程式碼)
(1)把手肘中心,放到世界中心,所以要將最初座標點都加上負號
(2)轉動要小心正負號、轉動軸
(3)把轉動的手肘放到正確的位置
void display()
{
glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
glColor3f(0,1,0);///綠色的身體
glPushMatrix();
glutSolidCube( 0.5 );
glPushMatrix();
glTranslatef(0.5,0.5,0);
glColor3f(1,0,0);
glutSolidCube(0.5);
glPopMatrix();
glPopMatrix();
glutSwapBuffers();
angle++;
}
glTranslatef(0.25,0.25,0);///3.把整個東西掛到右上角
glRotatef(angle,0,0,1); ///2.轉動
glTranslatef(0.25,0.25,0);///1.把旋轉中心,放到中心
以下為上方的程式碼
#include <GL/glut.h>
float angle = 0;
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.把旋轉中心,放到中心
glColor3f(1,0,0);
glutSolidCube(0.5);
glPopMatrix();
glPopMatrix();
glutSwapBuffers();
angle++;
}
int main(int argc, char* argv[] )
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB|GLUT_DOUBLE|GLUT_DEPTH);
glutCreateWindow("week03");
glutDisplayFunc(display);
glutIdleFunc(display);
glutMainLoop();
}
沒有留言:
張貼留言