第一個程式
codeblock/file/new/project/glut專案後再去到桌面葉老師上課用軟體 /
將freegult壓縮檔解壓縮 / 將freegult資料夾放置桌面
將freegult 內的lib內的 / libfreegult.a複製 / 改名為libgult32.a
新增一個glut專案 / 取名為week06-1_TRT_robot2
複習上週所學
///week06-1_TRT_robot2
///複製上週week05-2_TRT_robot貼上
#include <GL/glut.h>
float angle=0;
void display()
{
glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glutSolidSphere(0.02,30,30);///正中心的圓球
glPushMatrix();
glRotatef(angle,0,0,1);
glTranslatef(0.46,0.05,0);///(1)把旋轉的中心,放中心
glutSolidTeapot(0.3);
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();
}
第二個程式
///week06-2_TRT_robot3
///改自week06-1
///很多不同的連結狀況,而且手臂會帶手肘轉動
#include <GL/glut.h>
float angle=0;
void display()
{
glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glutSolidSphere(0.02,30,30);///正中心的圓球
glutSolidTeapot(0.3);///step02-1身體
glPushMatrix();///右手臂
glTranslatef(0.49,0.13,0);///step02-2新的
glRotatef(angle,0,0,1);///(2)就可以轉動
glTranslatef(0.46,-0.05,0);///(1)把旋轉的中心,放中心
glutSolidTeapot(0.3);
glPopMatrix();
glutSwapBuffers();
angle++;
}
int main(int argc, char *argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("week06");
glutDisplayFunc(display);
glutIdleFunc(display);
glutMainLoop();
}
第二個程式-2
///week06-2_TRT_robot3
///改自week06-1
///很多不同的連結狀況,而且手臂會帶手肘轉動
#include <GL/glut.h>
float angle=0;
void display()
{
glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glutSolidSphere(0.02,30,30);///正中心的圓球
glutSolidTeapot(0.3);///step02-1身體
glPushMatrix();///右手臂
glTranslatef(0.49,0.13,0);///step02-2新的
glRotatef(angle,0,0,1);///(2)就可以轉動
glTranslatef(0.46,-0.05,0);///(1)把旋轉的中心,放中心
glutSolidTeapot(0.3);
glPushMatrix();///右手肘
glTranslatef(0.49,0.13,0);///step02-2新的
glRotatef(angle,0,0,1);///(2)就可以轉動
glTranslatef(0.46,-0.05,0);///(1)把旋轉的中心,放中心
glutSolidTeapot(0.3);
glPopMatrix();
glPopMatrix();
glutSwapBuffers();
angle++;
}
int main(int argc, char *argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("week06");
glutDisplayFunc(display);
glutIdleFunc(display);
glutMainLoop();
}
第三個程式
///week06-3_TRT_robot_arm_hand_right_left///拿上週的week05-2來用
///畫出大的身體,畫出手臂
#include <GL/glut.h>
float angle=0;
void drawHand()
{
glPushMatrix();
glScalef(1,0.3,0.3);
glutSolidCube(0.5);
glPopMatrix();
}
void display()
{
glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glPushMatrix();
///(3)要掛上去
glRotatef(angle,0,0,1);///(2)轉動
glTranslatef(0.25,0,0);///(1)把中心放在中心
drawHand();
glPopMatrix();
glutSwapBuffers();
angle++;
}
int main(int argc, char *argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("week06");
glutDisplayFunc(display);
glutIdleFunc(display);
glutMainLoop();
}
第三個程式-2(出現手臂)
///week06-3_TRT_robot_arm_hand_right_left///拿上週的week05-2來用
///畫出大的身體,畫出手臂
#include <GL/glut.h>
float angle=0;
void drawHand()
{
glPushMatrix();
glScalef(1,0.3,0.3);
glutSolidCube(0.5);
glPopMatrix();
}
void display()
{
glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glPushMatrix();
///(3)要掛上去
///glRotatef(angle,0,0,1);///(2)轉動
///glTranslatef(0.25,0,0);///(1)把中心放在中心
///step03-1 把前面的T-R-T都先註解掉,會較好理解
drawHand();///上手臂
glPushMatrix();
///(3)要掛上去
glRotatef(angle,0,0,1);///(2)轉動
glTranslatef(0.25,0,0);///(1)把中心放在中心
drawHand();
glPopMatrix();
glPopMatrix();
glutSwapBuffers();
angle++;
}
int main(int argc, char *argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("week06");
glutDisplayFunc(display);
glutIdleFunc(display);
glutMainLoop();
}
第三個程式-3(將手臂掛在正確的位置)
///week06-3_TRT_robot_arm_hand_right_left///拿上週的week05-2來用
///畫出大的身體,畫出手臂
#include <GL/glut.h>
float angle=0;
void drawHand()
{
glPushMatrix();
glScalef(1,0.3,0.3);
glutSolidCube(0.5);
glPopMatrix();
}
void display()
{
glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glPushMatrix();
glTranslatef(0.25,0,0);///(3)要掛上去
glRotatef(angle,0,0,1);///(2)轉動
glTranslatef(0.25,0,0);///(1)把中心放在中心
///step03-1 把前面的T-R-T都先註解掉,會較好理解
///設定好後,再把上面的程式解開來
drawHand();///上手臂
glPushMatrix();
glTranslatef(0.25,0,0);///(3)要掛上去
glRotatef(angle,0,0,1);///(2)轉動
glTranslatef(0.25,0,0);///(1)把中心放在中心
drawHand();
glPopMatrix();
glPopMatrix();
glutSwapBuffers();
angle++;
}
int main(int argc, char *argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("week06");
glutDisplayFunc(display);
glutIdleFunc(display);
glutMainLoop();
}
第三個程式-4(出現左手臂手肘,將左右手臂手肘掛在正確的位置)
///week06-3_TRT_robot_arm_hand_right_left///拿上週的week05-2來用
///畫出大的身體,畫出手臂
#include <GL/glut.h>
float angle=0;
void drawHand()
{
glPushMatrix();
glScalef(1,0.3,0.3);
glutSolidCube(0.5);
glPopMatrix();
}
void display()
{
glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glPushMatrix();///右上手臂
glTranslatef(0.25,0,0);///(3)要掛上去
glRotatef(angle,0,0,1);///(2)轉動
glTranslatef(0.25,0,0);///(1)把中心放在中心
///step03-1 把前面的T-R-T都先註解掉,會較好理解
///設定好後,再把上面的程式解開來
drawHand();///右上手臂
glPushMatrix();///右下手肘
glTranslatef(0.25,0,0);///(3)要掛上去
glRotatef(angle,0,0,1);///(2)轉動
glTranslatef(0.25,0,0);///(1)把中心放在中心
drawHand();///右下手肘
glPopMatrix();
glPopMatrix();
glPushMatrix();///左上手臂
glTranslatef(-0.25,0,0);///(3)要掛上去
glRotatef(angle,0,0,1);///(2)轉動
glTranslatef(-0.25,0,0);///(1)把中心放在中心
///step03-1 把前面的T-R-T都先註解掉,會較好理解
///設定好後,再把上面的程式解開來
drawHand();///左上手臂
glPushMatrix();///左下手肘
glTranslatef(-0.25,0,0);///(3)要掛上去
glRotatef(angle,0,0,1);///(2)轉動
glTranslatef(-0.25,0,0);///(1)把中心放在中心
drawHand();///左下手肘
glPopMatrix();
glPopMatrix();
glutSwapBuffers();
angle++;
}
int main(int argc, char *argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("week06");
glutDisplayFunc(display);
glutIdleFunc(display);
glutMainLoop();
}







沒有留言:
張貼留言