2016年3月15日 星期二

Week 04 陳禹安

1. 作業互評上傳






2. 主題: 移動、旋轉、縮放

glTranslatef(x,y,z) x左右移動 y上下移動 z前後移動
3. 教材 與 實作
glTranslatef(x,y,z);
glRotatef(角度, x,y,z);
glScalef(x,y,z);
每點一次向上移動一次
#include <GL/glut.h>
void display()
{
    glClearColor(1,1,0,1);
    glClear(GL_COLOR_BUFFER_BIT);
    glTranslatef(0,0.2,0);
    glColor3f(1,0,0);
    glutSolidTeapot(0.3);
    glutSwapBuffers();


}
int main(int argc, char**argv)
{
    glutInit(&argc,argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("hello3D");
    glutDisplayFunc(display);
    glutMainLoop();

}




移動到滑鼠點的地方
#include <GL/glut.h>
float nowX=0,nowY=0;
void mouse(int butten,int state,int x,int y)
{
        nowX=(x-150)/150.0; nowY= -(y-150)/150.0;
}
void display()
{
    glClearColor(1,1,0,1);
    glClear(GL_COLOR_BUFFER_BIT);
    glPushMatrix();
    glTranslatef(nowX,nowY,0);
    glColor3f(1,0,0);
    glutSolidTeapot(0.3);
    glPopMatrix();
    glutSwapBuffers();


}
int main(int argc, char**argv)
{
    glutInit(&argc,argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("hello3D");
    glutDisplayFunc(display);
    glutMouseFunc(mouse);
    glutMainLoop();
}


4. Mouse進階
圓形
#include <GL/glut.h>
#include <stdio.h>
#include <math.h>
float nowX=0,nowY=0;
void mouse(int butten,int state,int x,int y)
{
        nowX=(x-150)/150.0; nowY= -(y-150)/150.0;
        printf("glTranslatef(%f,%f, 0\n",nowX,nowY);
}
void display()
{
    glClearColor(1,1,0,1);
    glClear(GL_COLOR_BUFFER_BIT);
    glPushMatrix();
    glTranslatef(nowX,nowY,0);
    glColor3f(1,0,0);
    glBegin(GL_POLYGON);
    for(float angle=0; angle< 3.14159265358979*2; angle+=0.1){
        glVertex2f(0.2*cos(angle),0.2*sin(angle) );
    }
    glEnd();
    glPopMatrix();
    glutSwapBuffers();


}
int main(int argc, char**argv)
{
    glutInit(&argc,argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("hello3D");
    glutDisplayFunc(display);
    glutMouseFunc(mouse);
    glutMainLoop();

}

沒有留言:

張貼留言