2022年3月14日 星期一

week04

 1 前往 https://jsyeh.org/3dcg10/ 下載WIN跟Data


2 解壓縮後,將Data資料夾放進Windows資料夾








3點擊Transformation.exe








WEEK04-1


程式碼

#include <GL/glut.h>

void myTeapot(float x,float y)

{

    glPushMatrix();

        glTranslatef(x,y,0);

        glutSolidTeapot(0.3);

    glPopMatrix();

}

void display()

{

    glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);

    glColor3f(1,0,1);

    myTeapot(+0.5,+0.5);

    myTeapot(+0.5,-0.5);

    myTeapot(-0.5,-0.5);

    myTeapot(-0.5,+0.5);


    glutSwapBuffers();

}

int main( int argc,char**argv)

{

    glutInit(&argc,argv);

    glutInitDisplayMode(GLUT_DOUBLE|GLUT_DEPTH);

    glutCreateWindow("04-2");


    glutDisplayFunc(display);

    glutMainLoop();

}

結果








04-2

程式碼

#include <GL/glut.h>

#include <stdio.h>

void mouse (int button,int state,int x,int y)

{

    printf("%d %d %d %d \n",button,state,x,y);

}

void display()

{

    glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);



    glutSwapBuffers();

}

int main( int argc,char**argv)

{

    glutInit(&argc,argv);

    glutInitDisplayMode(GLUT_DOUBLE|GLUT_DEPTH);

    glutCreateWindow("04-2");


    glutDisplayFunc(display);

    glutMouseFunc(mouse);

    glutMainLoop();

}

結果








*左鍵為0,中鍵為1,右鍵為2


04-3

程式碼

#include <GL/glut.h>

#include <stdio.h>

int mouseX=0,mouseY=0;

void mouse (int button,int state,int x,int y)

{

    mouseX=x,mouseY=y;

}

void display()

{

    glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);

    glColor3f(1,0,1);

    glPushMatrix();

        glTranslatef((mouseX-150)/150.0, -(mouseY-150)/150.0, 0);

        glutSolidTeapot(0.3);

    glPopMatrix();

    glutSwapBuffers();

}

int main( int argc,char**argv)

{

    glutInit(&argc,argv);

    glutInitDisplayMode(GLUT_DOUBLE|GLUT_DEPTH);

    glutCreateWindow("04-3");


    glutDisplayFunc(display);

    glutMouseFunc(mouse);

    glutMainLoop();

}

結果








04-4

程式碼

#include <GL/glut.h>

#include <stdio.h>

int mouseX=0,mouseY=0,N=0;

int mx[100],my[100];

void mouse (int button,int state,int x,int y)

{

    mouseX=x,mouseY=y;

    if(state==GLUT_DOWN){

        printf(" glVertex2f((%d-150)/150.0,-(%d-150)/150.0);\n",x,y);

        N++;

        mx[N-1]=x;my[N-1]=y;

    }

}

void display()

{

    glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);

    glColor3f(1,0,1);

    glBegin(GL_LINE_LOOP);

        for(int i=0;i<N;i++){

            glVertex2f((mx[i]-150)/150.0,-(my[i]-150)/150.0);

        }

    glEnd();

    glutSwapBuffers();

}

int main( int argc,char**argv)

{

    glutInit(&argc,argv);

    glutInitDisplayMode(GLUT_DOUBLE|GLUT_DEPTH);

    glutCreateWindow("04-4");


    glutDisplayFunc(display);

    glutMouseFunc(mouse);

    glutMainLoop();

}

結果











用滑鼠畫圖

#include <stdio.h>
#include <GL/glut.h>
int N=0;
int x[1000],y[1000];
void display()

{

    glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
    glBegin(GL_LINE_LOOP);
    for(int i=0;i<N;i++){
         glVertex2f((x[i]-150)/150.0,-(y[i]-150)/150.0);
    }
    glEnd();

    glutSwapBuffers();

}
//void mouse (int button,int state,int mouseX,int mouseY)
void motion(int mouseX,int mouseY)
{


    //if(state==GLUT_DOWN){
        N++;

        x[N-1]=mouseX;
        y[N-1]=mouseY;

        printf("Press Mouse,to get new Coordinate %d %d\n",x[N-1],y[N-1]);


//}
display();
}
int main( int argc,char**argv)

{

    glutInit(&argc,argv);

    glutInitDisplayMode(GLUT_DOUBLE|GLUT_DEPTH);

    glutCreateWindow("05 複習");



    glutDisplayFunc(display);

   glutMotionFunc(motion);

   // glutMouseFunc(mouse);

    glutMainLoop();

}





結果




沒有留言:

張貼留言