2016年3月14日 星期一

BOZC Week04

Week04

1.主题

a:平移


b:旋转


c:缩放


2.mouse操作

打开glut project

在main.cpp中输入以下程式码

void mouse(int button, int state, int x,int y);
{
    if(state==GLUT_DOWN)
        printf("glVertex2f((%d-150)/150.0,-(%d-150)/150.0);\n",x,y);
    
}

此程式码可以显示图片上的点坐标
再用标记复制可以直接copy至程式码中








加入程式码并完成两个三角形:



以下为程式码:

#include <GL/glut.h>
#include <stdio.h>
#include <math.h>
void mouse(int button, int state, int x, int y)
{
    if(state==GLUT_DOWN)
        printf("       glVertex2f((%d-150)150.0,-(%d-150)/150.0); \n",x,y);
}
void display()
{
    glClearColor(150/255.0,170/255.0,55/255.0,1);
    glClear(GL_COLOR_BUFFER_BIT);
    glColor3ub(175,193,81);
    glBegin(GL_POLYGON);

        glVertex2f((147-150)/150.0,-(197-150)/150.0);
        glVertex2f((124-150)/150.0,-(241-150)/150.0);
        glVertex2f((181-150)/150.0,-(249-150)/150.0);
        glEnd();
    glBegin(GL_POLYGON);

        glVertex2f((216-150)/150.0,-(147-150)/150.0);
        glVertex2f((252-150)/150.0,-(111-150)/150.0);
        glVertex2f((257-150)/150.0,-(173-150)/150.0);
        glEnd();

    glPushMatrix();
    glBegin(GL_POLYGON);
    for(float angle=0;angle<3.14159265357989*2;angle+=0.1)
    {
     glVertex2f(0.2*cos(angle),0.2*sin(angle));
    }
    glEnd();
    glPopMatrix();
        glPushMatrix();
        glTranslatef(0,0.5,0);
    glBegin(GL_POLYGON);
    for(float angle=0;angle<3.14159265357989*2;angle+=0.1)
    {
     glVertex2f(0.2*cos(angle),0.2*sin(angle));
    }
    glEnd();
    glPopMatrix();
    glPopMatrix();
        glPushMatrix();
        glTranslatef(-0.5,0,0);
    glBegin(GL_POLYGON);
    for(float angle=0;angle<3.14159265357989*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();
}

3.附加












沒有留言:

張貼留言