(1) 主題 : T-R-T特定軸轉
(2) 複習 : 移動、轉、縮放
(3) 主題 : 矩陣 Matrix
和上星期一樣到 https://jsyeh.org/3dcg10/ 下載範例程式
下載date.zip--->解壓縮
下載windows.zip--->解壓縮至此啟動Transformation.exe
translatef 左右移動
rotatef 以軸為中心轉動
scalef 長胖的
begin.... 藍色車子
Translatef在前面是自轉
實作
開新GLUT專案 > week05_rotate
從Github找到並複製week04,貼到專案
#include <GL/glut.h>
float angle=0;///step02-1
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);///對z軸
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();
}
畫手臂
打開老師傳送過來的程式
劃出兩塊圖案
切英文輸入法按空白鍵可轉動
↓
把圖案抓到白色的點上
就可以讓他以白色的點為中心轉
myDrawObject(0);///身體
glPushMatrix();
glTranslatef(+0.18,+0.28,0);//(3)最後把會移動的手臂,掛在肩膀上
glRotatef(angle,0,0,1); //(2)整個都對Z軸轉
glTranslatef(-0.18,-0.28,0); //(1)把旋轉中心放正中間
myDrawObject(1);///要轉動的手臂
glPopMatrix();
方塊旋轉
#include <GL/glut.h>
float angle=0;
void display()
{
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glColor3f(0,1,0);///green body
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);
glColor3f(1,0,0);///red arm
glutSolidCube(0.5);
glPopMatrix();
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();
}
考試題目
glPushMatrix();
glTranslatef(-0.5,-0.9,0);
glRotatef(-45,0,0,1);
glTranslatef(-0.8,-0.9,0);
drawHand();
glPopMatrix();
很衰都沒放到假 所以這學期有小考...
沒有留言:
張貼留言