2019年3月21日 星期四

Renfu--week5_06160034

電腦圖學第五週

(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);












#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();///記得一定要加這行不然會跑不出來

}

沒有留言:

張貼留言