(二)讓機器人動
(三)Timer計時器
(四)鍵盤滑鼠控制
(五)機器人2.0
TODO:用同學範例
(1).cbp檔用notepad++開啟,include目錄,lib目錄設對
working目錄設"."
(2) Build &Run
Timer計時器:
#include <stdio.h>
void timer(int t)
{
printf("現在我起床了, t是%d...", t);
glutTimerFunc(100, timer, t+1);
printf("我撥了一個新的timer....");
angle+=3;
glutPostRedisplay();
printf("記得重畫畫面哦! 我睡了, bye\n");
}
int main(int argc, char**argv)裡面+
glutTimerFunc(2000,timer,0);
2000=秒數,timer呼叫函式,0=參數
旋轉手臂
先把手臂位子放到函式裡
void drawArm0()
{
....;
}
先把手臂位子放到函式裡
void drawArm0()
{
....;
}
在召喚左手臂回來
glPushMatrix();
//drawBody();
//glutSolidTeapot(0.03);
glPushMatrix();///Left Part
glTranslatef(-0.22, +0.35, 0);///(3) 最後,把它掛在對的位置
glRotatef(-angle, 0,0,1); ///(1) 先轉動
glTranslatef(0.22, -0.35, 0);///(2) move the rotate center to center
drawArm0();//先搞定上手臂在搞定下手臂
glTranslatef(-0.48, +0.1, 0);///(3) 最後,把它掛在對的位置
glRotatef(-angle, 0,0,1);///(1) 先轉動
glTranslatef(0.48, -0.1, 0);///(2) 接著將旋轉中心,放到真的中心, 記得把樓上先註解掉
drawArm1();
glPopMatrix();
glPopMatrix();
右手臂:
用滑鼠拖曳(用滑鼠轉角度)
用鍵盤+滑鼠控制各部位
float angle[8] = {} ;///全家都是零(看幾個關節)
int now=0;
int oldX=0, oldY=0;
void keyboard(unsigned char key, int x, int y)
{
if(key=='0')now=0;
if(key=='1')now=1;
if(key=='2')now=2;
if(key=='3')now=3;
if(key=='4')now=4;
}
void mouse(int button, int state, int x, int y)
{
oldX=x; oldY=y;
glutPostRedisplay();
}
void motion(int x, int y)
{
angle[now] += (x-oldX);
oldX=x;
glutPostRedisplay();
}
int main裡面
glutKeyboardFunc(keyboard);

沒有留言:
張貼留言