電腦圖學第五週
(1)主題:旋轉Rotation
(2)實作:glRotatef()
(3)滑鼠轉、自動轉
首先我們要先到網站小葉的網站,去下載三個東西
[data][win32][glut32.dll]
把data和win32解壓縮放到windows資料夾
glut32.dll也放進去
之後開啟Transformation.exe
glTranslatef >>>(控制X,Y,Z方位 )
glRotatef >>>(控制車的角度 )
glScalef >>>(控制車子的長扁寬 )
對程式按右鍵可以更改物品哦!
再依上周下載Download freeglut 3.0.0 for MinGW
然後開啟code blocks後更改程式碼
讓茶壺自動轉
#include <GL/glut.h>
float angle=0;///今天教的
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);///沒有clear會有殘影
glPushMatrix();///push備份保護matrix
glRotatef(angle,0,1,0);///今天教的
glutSolidTeapot(0.3);
glPopMatrix();///pop還原Matrix
glutSwapBuffers();
angle++;///每次執行到這加一點點
}
int main(int argc, char**argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("week05 renren rotate");
glutDisplayFunc(display);
glutIdleFunc(display);
glutMainLoop();///記得一定要加這行不然會跑不出來
}
可以自己旋轉茶壺
#include <GL/glut.h>
float angle=0;///今天教的
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);///沒有clear會有殘影
glPushMatrix();///push備份保護matrix
glRotatef(angle,0,1,0);///今天教的
glutSolidTeapot(0.3);
glPopMatrix();///pop還原Matrix
glutSwapBuffers();
}
void motion (int x, int y)
{
angle=x;
display();
}
int main(int argc, char**argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("week05 renren rotate");
glutDisplayFunc(display);
glutIdleFunc(display);
glutMotionFunc(motion);///新加的
glutMainLoop();///記得一定要加這行不然會跑不出來
}
加入mouse
#include <stdio.h>
void mouse(int button, int state, int x, int y)
{
printf("%d %d %d %d\n", button, state, x, y);
}
滑鼠事件所增加
記得要 >>>>>>>glutMouseFunc(mouse);
[data][win32][glut32.dll]
把data和win32解壓縮放到windows資料夾
glut32.dll也放進去
之後開啟Transformation.exe
glTranslatef >>>(控制X,Y,Z方位 )
glRotatef >>>(控制車的角度 )
glScalef >>>(控制車子的長扁寬 )
對程式按右鍵可以更改物品哦!
再依上周下載Download freeglut 3.0.0 for MinGW
然後開啟code blocks後更改程式碼
讓茶壺自動轉
#include <GL/glut.h>
float angle=0;///今天教的
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);///沒有clear會有殘影
glPushMatrix();///push備份保護matrix
glRotatef(angle,0,1,0);///今天教的
glutSolidTeapot(0.3);
glPopMatrix();///pop還原Matrix
glutSwapBuffers();
angle++;///每次執行到這加一點點
}
int main(int argc, char**argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("week05 renren rotate");
glutDisplayFunc(display);
glutIdleFunc(display);
glutMainLoop();///記得一定要加這行不然會跑不出來
}
可以自己旋轉茶壺
#include <GL/glut.h>
float angle=0;///今天教的
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);///沒有clear會有殘影
glPushMatrix();///push備份保護matrix
glRotatef(angle,0,1,0);///今天教的
glutSolidTeapot(0.3);
glPopMatrix();///pop還原Matrix
glutSwapBuffers();
}
void motion (int x, int y)
{
angle=x;
display();
}
int main(int argc, char**argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("week05 renren rotate");
glutDisplayFunc(display);
glutIdleFunc(display);
glutMotionFunc(motion);///新加的
glutMainLoop();///記得一定要加這行不然會跑不出來
}
加入mouse
#include <stdio.h>
void mouse(int button, int state, int x, int y)
{
printf("%d %d %d %d\n", button, state, x, y);
}
滑鼠事件所增加
記得要 >>>>>>>glutMouseFunc(mouse);
#include <GL/glut.h>
float angle=0;///今天教的
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);///沒有clear會有殘影
glPushMatrix();///push備份保護matrix
glRotatef(angle,0,1,0);///今天教的
glutSolidTeapot(0.3);
glPopMatrix();///pop還原Matrix
glutSwapBuffers();
}
void motion (int x, int y)
{
angle=x;
display();
}
#include <stdio.h>
void mouse(int button, int state, int x, int y)
{
printf("%d %d %d %d\n", button, state, x, y);
}
int main(int argc, char**argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("week05 renren rotate");
glutDisplayFunc(display);
glutIdleFunc(display);
glutMotionFunc(motion);///新加的
glutMouseFunc(mouse);
glutMainLoop();///記得一定要加這行不然會跑不出來
}
沒有留言:
張貼留言