2024年3月7日 星期四

week03

 Week 03

下載freeglut 把libfreeglut.a複製
重新命名libglut32.a


標示座標
座標(x,y,z)
#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);
    if(state==GLUT_DOWN)
        printf("glVertex2f((%d-150)/150.0, -(%d-150)/150.0);\n", x, y);
}
void display()
{
    glutSolidTeapot ( 0.3 );
    glutSwapBuffers();
}

int main(int argc, char *argv[])///138¦æ
{
  glutInit(&argc, argv);///140¦æ
  glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);///143¦æ
  glutCreateWindow("GLUT Shapes");///145¦æ
  glutDisplayFunc(display);///148¦æ
  glutMouseFunc(mouse);

  glutMainLoop();///174¦æ

}

模型
https://jsyeh.org/3dcg10/到這下載data window
在解壓縮 將data移到window
再打開translatef
移動茶壺

用原本的程式碼
再修改幾行
#include <GL/glut.h>
#include <stdio.h>
float teapotX = 0, teapotY = 0;
void mouse (int button,int state, int x,int y)
{
    teapotX = (x-150)/150.0;
    teapotY = -(y-150)/150.0;
}
void display()
{   glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
    glPushMatrix();
    glTranslatef(teapotX, teapotY, 0);
    glutSolidTeapot ( 0.3 );
    glPopMatrix();
    glutSwapBuffers();
}

int main(int argc, char *argv[])///138¦æ
{
  glutInit(&argc, argv);///140¦æ
  glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);///143¦æ
  glutCreateWindow("GLUT Shapes");///145¦æ
  glutDisplayFunc(display);///148¦æ
  glutMouseFunc(mouse);

  glutMainLoop();///174¦æ

}


旋轉茶壺


#include <GL/glut.h>
#include <stdio.h>
float teapotX = 0, teapotY = 0;
float angle = 0;
void mouse (int button,int state, int x,int y)
{
    teapotX = (x-150)/150.0;
    teapotY = -(y-150)/150.0;
}
void display()
{   glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
    glPushMatrix();
    glRotatef(angle, 0, 0, 1);
    glutSolidTeapot ( 0.3 );
    glPopMatrix();
    glutSwapBuffers();
}
void motion (int x,int y)
{
    angle = x;
    display();
}

int main(int argc, char *argv[])///138¦æ
{
  glutInit(&argc, argv);///140¦æ
  glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);///143¦æ
  glutCreateWindow("GLUT Shapes");///145¦æ
  glutDisplayFunc(display);///148¦æ
  glutMotionFunc(motion);

  glutMainLoop();///174¦æ

}







沒有留言:

張貼留言