本日目標
複習移動旋轉
TRT特定軸轉
階層性旋轉
矩陣(整合)
觀察結果:
TR >> 原地旋轉
鏡頭跟車子保持一定距離
RT >> 繞圈旋轉
鏡頭旋轉的時候 跟車子有近有遠
小葉老師說明:
TR
圖片1-1 1-2
簡而言之 把移動的車車放到旁邊
RT

圖片2-1
簡而言之 把車車放到旁邊轉底盤
寫寫看程式

圖片3-1
解釋程式
#include <GL/glut.h>
#include <stdlib.h>
float an=0;///角度一開始設0
void display()///畫圖函式
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);///清理畫面
glPushMatrix();///記住乾淨的樣子
///下列三行程式由下往上看
glRotatef(an,0,0,1);///3.把在0.3,-0.07,0位置的茶壺以Z軸旋轉an角度
glTranslated(0.3,-0.07,0);///2.把茶壺放在0.3,-0.07,0的位置
glutSolidTeapot(0.3);///1.有個茶壺
glPopMatrix();///恢復乾淨
glutSwapBuffers();
}
void mousement(int x,int y)
{
an=x;
glutPostRedisplay();///畫面重製
}
int main(int argc, char**argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("week05 TRT測試");
glutDisplayFunc(display);
glutMotionFunc(mousement);
glutMainLoop();
}
畫個茶壺機器人戰士

圖片4-1
#include <GL/glut.h>
#include <stdlib.h>
float an=0;///角度一開始設0
void display()///畫圖函式
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);///清理畫面
glPushMatrix();///記住乾淨的樣子
///中心茶壺
glutSolidTeapot(0.3);///1.有個茶壺
///下列程式由下往上看
glPushMatrix();///右邊手臂的陣列組
///A手臂的四行程式
glTranslated(0.08,0.07,0);///把會旋轉的茶壺放到這裡
glRotatef(an,0,0,1);///3. 讓茶壺可以旋轉
glTranslated(0.67,0.01,0);///2. 把茶壺放在這裡
glutSolidTeapot(0.3);///1. 有個茶壺
glPushMatrix();///開新手臂的小陣列組
glTranslated(0.08,0.07,0);///把會旋轉的茶壺放到這裡
glRotatef(an,0,0,1);///3. 讓茶壺可以旋轉
glTranslated(0.67,0.01,0);///2. 把茶壺放在這裡
glutSolidTeapot(0.3);///1. 有個茶壺
glPopMatrix();///小陣列組結束
glPopMatrix();///右邊手臂陣列組結束
glPushMatrix();
glTranslated(-0.08,0.07,0);///把會旋轉的茶壺放到這裡
glRotatef(an,0,0,1);///3. 讓茶壺可以旋轉
glTranslated(-0.67,0.01,0);///2. 把茶壺放在這裡
glutSolidTeapot(0.3);///1. 有個茶壺
glPushMatrix();
glTranslated(-0.08,0.07,0);///把會旋轉的茶壺放到這裡
glRotatef(an,0,0,1);///3. 讓茶壺可以旋轉
glTranslated(-0.67,0.01,0);///2. 把茶壺放在這裡
glutSolidTeapot(0.3);///1. 有個茶壺
glPopMatrix();
glPopMatrix();
glPopMatrix();///恢復乾淨
glutSwapBuffers();
}
void mousement(int x,int y)
{
an=x;
glutPostRedisplay();///畫面重製
}
int main(int argc, char**argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("week05 TRT測試");
glutDisplayFunc(display);
glutMotionFunc(mousement);
glutMainLoop();
}
沒有留言:
張貼留言