week06-1_TRT_robot2
透過glutSolidShpere();//圓球 新增一個圓形作為中心點,可方便照出相對應的中心位置
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); ///清背景
glutSolidSphere(0.02,30,30); ///利用圓球找出正中央
glPushMatrix(); /// 備份矩陣
glTranslatef(0.25,0.25,0); ///(3)將茶壺放置到要放的位置
glRotatef(angle,0,0,1); /// (2)轉動看成果是否符合預想
glTranslatef(0.46,-0.05,0); ///(1)將茶壺中心放置正中央
glutSolidTeapot(0.3);
glPopMatrix(); ///還原矩陣
glutSwapBuffers(); ///請GLUT畫面swap送到顯示的地方
angle++; /// 把角度++
}
-------------------------------------------------------------------------------------------------------------------
step02-1
week06-2_TRT_robot3_hierarchy
--1 新增一個茶壺物件-->當作身體
--2 將旋轉的茶壺物件放至指定位置((右方壺的出水口處)),當作手臂
--3 增加第三個茶壺物件,放在原本轉動的第二茶壺上,當作手肘(elbow)
step02-3
week06-3_TRT_robot_arm_hand_right_left
--1 建立新專案,新增cube
--2 增加drawhand()涵式,建立長方形手
---------------------------------------------------------------------------------------------------------------------
step03-1
延續 week06-3
--1 新增另一長方形物件,當作手肘
--2 停止身體的rotate涵式,單獨轉動新物件
--3 將位置調整至正確位置(想要放的位置)
--4 將手臂的物件加入轉動,並同樣放置在預想位置
--5 增加左半邊手臂手肘
到目前為止,整個display()跟drawHand()涵式如下:
void drawHand()
{
glPushMatrix();
glScaled(1,0.3,0.3);
glutSolidCube(0.5);
glPopMatrix();
}
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); ///清背景
//glColor3f(0,1,0); /// green body
glPushMatrix(); ///右上手臂
glTranslatef(0.25,0,0);
glRotatef(angle,0,0,1); ///
glTranslatef(0.25,0,0); ///
///step 03-1
drawHand(); ///右上手臂
glPushMatrix(); ///右上手肘
glTranslatef(0.25,0,0);
glRotatef(angle,0,0,1); ///
glTranslatef(0.25,0,0);
drawHand();
glPopMatrix(); ///右上手肘
glPopMatrix();
glPushMatrix(); ///左上手臂
glTranslatef(-0.25,0,0);
glRotatef(angle,0,0,1); ///
glTranslatef(-0.25,0,0); ///
///step 03-1
drawHand(); ///左上手臂
glPushMatrix(); ///左上手肘
glTranslatef(-0.25,0,0);
glRotatef(angle,0,0,1); ///
glTranslatef(-0.25,0,0);
drawHand();
glPopMatrix(); ///左上手肘
glPopMatrix();
glutSwapBuffers(); ///請GLUT畫面swap送到顯示的地方
angle++; /// 把角度++
}
沒有留言:
張貼留言