2015年3月26日 星期四

week05_簡上棋

先寫出一個會自動旋轉3D的甜甜圈

#include<GL/freeglut.h>
void display()
{
    glClear(GL_COLOR_BUFFER_BIT);
    glRotatef(0.05,0.3,0.4,0);
    glutWireTorus(0.3,0.5,30,30);
    glFlush();
}

int main(int argc,char** argv)
{
    glutInit(&argc,argv);
    glutCreateWindow("02160393_DownChess");
    glutDisplayFunc(display);
    glutIdleFunc(display);
    glutMainLoop();
}

建兩個旋轉的黑白方形 
void display()
{
    glClear(GL_COLOR_BUFFER_BIT);
    glRotatef(0.05,0.1,0.3,0);
    //glutWireTorus(0.3,0.5,30,30);
    glBegin(GL_LINE_LOOP);
    glVertex3f(0.3,0.3,0.5);
    glVertex3f(-0.3,0.3,0.5);
    glVertex3f(-0.3,-0.3,0.5);
    glVertex3f(0.3,-0.3,0.5);
    glEnd();

    glBegin(GL_POLYGON);
    glVertex3f(0.3,0.3,-0.5);
    glVertex3f(-0.3,0.3,-0.5);
    glVertex3f(-0.3,-0.3,-0.5);
    glVertex3f(0.3,-0.3,-0.5);
    glEnd();
    glFlush();
}
建立立體方形
void display()
{
    glClear(GL_COLOR_BUFFER_BIT);
    glRotatef(0.05,0.1,0.3,0);
    //glutWireTorus(0.3,0.5,30,30);
    glColor3f(1,1,1);
    glBegin(GL_POLYGON);
    glVertex3f(0.3,0.3,0.5);
    glVertex3f(-0.3,0.3,0.5);
    glVertex3f(-0.3,-0.3,0.5);
    glVertex3f(0.3,-0.3,0.5);
    glEnd();
    glBegin(GL_POLYGON);
    glVertex3f(0.3,0.3,-0.5);
    glVertex3f(-0.3,0.3,-0.5);
    glVertex3f(-0.3,-0.3,-0.5);
    glVertex3f(0.3,-0.3,-0.5);
    glEnd();
    glBegin(GL_QUAD_STRIP);
    glVertex3f(0.3,0.3,0.5);
    glVertex3f(0.3,0.3,-0.5);
    glVertex3f(-0.3,0.3,0.5);
    glVertex3f(-0.3,0.3,-0.5);
    glVertex3f(-0.3,-0.3,0.5);
    glVertex3f(-0.3,-0.3,-0.5);
    glVertex3f(0.3,-0.3,0.5);
    glVertex3f(0.3,-0.3,-0.5);
    glEnd();
    glFlush();
}

加上邊線
    glColor3f(0,0,0);
    glBegin(GL_LINE_LOOP);
    glVertex3f(0.3,0.3,0.5);
    glVertex3f(-0.3,0.3,0.5);
    glVertex3f(-0.3,-0.3,0.5);
    glVertex3f(0.3,-0.3,0.5);
    glEnd();
    glBegin(GL_LINE_LOOP);
    glVertex3f(0.3,0.3,-0.5);
    glVertex3f(-0.3,0.3,-0.5);
    glVertex3f(-0.3,-0.3,-0.5);
    glVertex3f(0.3,-0.3,-0.5);
    glEnd();
    glBegin(GL_LINES);
    glVertex3f(0.3,0.3,0.5);
    glVertex3f(0.3,0.3,-0.5);
    glVertex3f(-0.3,0.3,0.5);
    glVertex3f(-0.3,0.3,-0.5);
    glVertex3f(-0.3,-0.3,0.5);
    glVertex3f(-0.3,-0.3,-0.5);
    glVertex3f(0.3,-0.3,0.5);
    glVertex3f(0.3,-0.3,-0.5);
    glEnd();
用滑鼠控制旋轉
#include<GL/freeglut.h>
#include<stdio.h>
float a=0,b=0;
void display()
{
    glClear(GL_COLOR_BUFFER_BIT);
    glPushMatrix();
    glRotatef(b,-1,0,0);
    glRotatef(a,0,1,0);
    //glutWireTorus(0.3,0.5,30,30);
    glColor3f(1,1,1);
    glBegin(GL_POLYGON);
    glVertex3f(0.3,0.3,0.5);
    glVertex3f(-0.3,0.3,0.5);
    glVertex3f(-0.3,-0.3,0.5);
    glVertex3f(0.3,-0.3,0.5);
    glEnd();
    glBegin(GL_POLYGON);
    glVertex3f(0.3,0.3,-0.5);
    glVertex3f(-0.3,0.3,-0.5);
    glVertex3f(-0.3,-0.3,-0.5);
    glVertex3f(0.3,-0.3,-0.5);
    glEnd();
    glBegin(GL_QUAD_STRIP);
    glVertex3f(0.3,0.3,0.5);
    glVertex3f(0.3,0.3,-0.5);
    glVertex3f(-0.3,0.3,0.5);
    glVertex3f(-0.3,0.3,-0.5);
    glVertex3f(-0.3,-0.3,0.5);
    glVertex3f(-0.3,-0.3,-0.5);
    glVertex3f(0.3,-0.3,0.5);
    glVertex3f(0.3,-0.3,-0.5);
    glEnd();

    glColor3f(0,0,0);
    glBegin(GL_LINE_LOOP);
    glVertex3f(0.3,0.3,0.5);
    glVertex3f(-0.3,0.3,0.5);
    glVertex3f(-0.3,-0.3,0.5);
    glVertex3f(0.3,-0.3,0.5);
    glEnd();
    glBegin(GL_LINE_LOOP);
    glVertex3f(0.3,0.3,-0.5);
    glVertex3f(-0.3,0.3,-0.5);
    glVertex3f(-0.3,-0.3,-0.5);
    glVertex3f(0.3,-0.3,-0.5);
    glEnd();
    glBegin(GL_LINES);
    glVertex3f(0.3,0.3,0.5);
    glVertex3f(0.3,0.3,-0.5);
    glVertex3f(-0.3,0.3,0.5);
    glVertex3f(-0.3,0.3,-0.5);
    glVertex3f(-0.3,-0.3,0.5);
    glVertex3f(-0.3,-0.3,-0.5);
    glVertex3f(0.3,-0.3,0.5);
    glVertex3f(0.3,-0.3,-0.5);
    glEnd();
    glPopMatrix();
    glFlush();
}

void motion(int x,int y)
{
    printf("%d %d\n",x,y);
    a=x;
    b=y;
}

int main(int argc,char** argv)
{
    glutInit(&argc,argv);
    glutCreateWindow("02160393_DownChess");
    glutDisplayFunc(display);
    glutIdleFunc(display);
    glutMotionFunc(motion);
    glutMainLoop();
}


沒有留言:

張貼留言