week10 -- 4/22
(1)主題:T-R-T關節運動
(2)主題:階層運動
筆記原創:11160171
解壓縮 freeglut-MinGW-3.0.0-1.mp.zip
➡把解壓縮完的檔案移到桌面
➡把124KB的檔案改名成 libglut32.a
⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵
week10_TRT_glutSolidCube_myBody_myArm:
先複製上周week09-2的程式碼
#include <GL/glut.h>
void display()
{
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glPushMatrix();
glTranslatef(-0.6,+0.3,0);
glutSolidTeapot(0.3);
glPopMatrix();
glPushMatrix();
glTranslatef(+0.0,+0.3,0);
glutSolidCube(0.3);
glPopMatrix();
glPushMatrix();
glTranslatef(+0.6,+0.3,0);
glutSolidSphere(0.3,30,30);
glPopMatrix();
glutSwapBuffers();
}
int main(int argc, char *argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("week09-2 glutSolid¨t¦C");
glutDisplayFunc(display);
glutMainLoop();
}
要用glutSolidCube(0.3)用兩次
#include <GL/glut.h>
void display()
{
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glPushMatrix();
glTranslatef(-0.6,+0.3,0);
glColor3f(1,0,0);///紅色的身體
glutSolidCube(0.3);///方塊
glPopMatrix();
glPushMatrix();
glTranslatef(+0.0,+0.3,0);
glColor3f(0,1,0);///綠色的手臂
glScalef(1.5,0.5,0.5);
glutSolidCube(0.3);
glPopMatrix();
glutSwapBuffers();
}
int main(int argc, char *argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("week09-2 glutSolid¨t¦C");
glutDisplayFunc(display);
glutMainLoop();
}
⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵
#include <GL/glut.h>
void myBody(){
glColor3f(1,0,0);
glutSolidCube(0.3);
}
void myArm(){
glColor3f(0,1,0);
glScalef(1.5,0.5,0.5);
glutSolidCube(0.3);
}
void display()
{
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glPushMatrix();
glTranslatef(-0.6,+0.3,0);
myBody();///把程式移上去
glPopMatrix();
glPushMatrix();
glTranslatef(+0.0,+0.3,0);
myArm();///把程式移上去
glPopMatrix();
glutSwapBuffers();
}
int main(int argc, char *argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("week09-2 glutSolid¨t¦C");
glutDisplayFunc(display);
glutMainLoop();
}
⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵
week10-1修正版
#include <GL/glut.h>
void myBody(){
glColor3f(1,0,0);///紅色身體
glutWireCube(0.6);
}
void myArm(){
glColor3f(0,1,0);///綠色手臂
glScalef(1.5,0.5,0.5);
glutWireCube(0.3);
}
void display()
{
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glPushMatrix();
///glTranslatef(-0.6,+0.3,0);
myBody();
glPopMatrix();
glPushMatrix();
///glTranslatef(+0.0,+0.3,0);
myArm();
glPopMatrix();
glutSwapBuffers();
}
int main(int argc, char *argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("week09-2 glutSolid¨t¦C");
glutDisplayFunc(display);
glutMainLoop();
}
⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵
week10-2_TRT_glutIdleFunc_rotate:
貼上week10-1的程式
加上 float angle=0
glRotatef(angle,x,y,z)
glutIdleFunc(display);
#include <GL/glut.h>
void myBody(){
glColor3f(1,0,0);
glutSolidCube(0.3);
}
void myArm(){
glColor3f(0,1,0);
glScalef(1.5,0.5,0.5);
glutSolidCube(0.3);
}
float angle=0;
void display()
{
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glPushMatrix();
glTranslatef(-0.6,+0.3,0);
myBody();
glPopMatrix();
glPushMatrix();
glTranslatef(+0.0,+0.3,0);
glRotatef(angle++,0,0,1);
myArm();
glPopMatrix();
glutSwapBuffers();
}
int main(int argc, char *argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("week09-2 glutSolid¨t¦C");
glutDisplayFunc(display);
glutIdleFunc(display);
glutMainLoop();
}
⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵
week10-2修正版
#include <GL/glut.h>
void myBody(){
glColor3f(1,0,0);
glutWireCube(0.6);
}
void myArm(){
glColor3f(0,1,0);
glScalef(1.5,0.5,0.5);
glutWireCube(0.3);
}
float angle=0;
void display()
{
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glPushMatrix();
///glTranslatef(-0.6,+0.3,0);
myBody();
glPopMatrix();
glPushMatrix();
///glTranslatef(+0.0,+0.3,0);
glRotatef(angle++,0,0,1);
myArm();
glPopMatrix();
glutSwapBuffers();
}
int main(int argc, char *argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("week09-2 glutSolid¨t¦C");
glutDisplayFunc(display);
glutIdleFunc(display);
glutMainLoop();
}
⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵
week10-3_TRT_glRotatef_glTranslatef:
貼上week10-2的程式
在glRotatef()與myArm()中間新增一行glTranslate()
⇛移動旋轉中心
#include <GL/glut.h>
void myBody(){
glColor3f(1,0,0);
glutSolidCube(0.3);
}
void myArm(){
glColor3f(0,1,0);
glScalef(1.5,0.5,0.5);
glutSolidCube(0.3);
}
float angle=0;
void display()
{
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glPushMatrix();
glTranslatef(-0.6,+0.3,0);
myBody();
glPopMatrix();
glPushMatrix();
///glTranslatef(+0.0,+0.3,0);
glRotatef(angle++,0,0,1);
glTranslatef(0.225,0,0);///把移度中心做移動
myArm();
glPopMatrix();
glutSwapBuffers();
}
int main(int argc, char *argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("week09-2 glutSolid¨t¦C");
glutDisplayFunc(display);
glutIdleFunc(display);
glutMainLoop();
}
⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵⤵
week10-4_TRT_glTranslatef_glRotatef_glTranslatef:
week10-5_TRT_two_layers
#include <GL/glut.h>
void myBody()
{
glColor3f(1,0,0);
glutWireCube(0.6);///變空心
}
void myArm()
{
glPushMatrix();///要加保護機制!!
glColor3f(0,1,0);
glScalef(1.5,0.5,0.5);
glutWireCube(0.3);///變空心
glPopMatrix();
}
float angle=0;
void display()
{
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glPushMatrix();
///glTranslatef(-0.6,+0.3,0);
myBody();
glPopMatrix();
glPushMatrix();///右手上手臂
glTranslatef(+0.3,+0.3,0);///移動整個手臂
glRotatef(angle++,0,0,1);
glTranslatef(0.225,0,0);///把移度中心做移動
myArm();
glPushMatrix();///右手下手臂
glTranslatef(+0.225,0,0);///移動整個下手臂
glRotatef(angle++,0,0,1);
glTranslatef(0.225,0,0);///把移度中心做移動
myArm();
glPopMatrix();
glPopMatrix();
glutSwapBuffers();
}
int main(int argc, char *argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("week09-2 glutSolid¨t¦C");
glutDisplayFunc(display);
glutIdleFunc(display);
glutMainLoop();
兇
回覆刪除