2023年3月1日 星期三

擦 大哥_week03_移動

擦 大哥_week03_移動



下載上課檔案
data and win32 (網址:https://jsyeh.org/3dcg10/)

解壓縮 打開Transformation

week03-1

怎麼開新檔案不用教了吧

複製week02-1茶壺程式碼

加入這幾行

#include <GL/glut.h>

void display()

{
    glPushMatrix();
        glTranslatef(0.5,0,0);
        glutSolidTeapot(0.3);
    glPopMatrix();
    glutSwapBuffers();

}

int main(int argc, char *argv[])

{

glutInit(&argc, argv);

glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);

glutCreateWindow("GLUT Shapes");

glutDisplayFunc(display);

glutMainLoop();

}

week03-2

透過mouse移動

#include <GL/glut.h>
float X=0, Y=0;
void display()

{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glPushMatrix();
        glTranslatef(X,Y,0);
        glutSolidTeapot(0.3);
    glPopMatrix();
    glutSwapBuffers();

}

void mouse(int button, int state, int x, int y)
{
    X = (x-150)/150.0;
    Y = -(y-150)/150.0;   tips:減一半 除一半 加負號
}
int main(int argc, char *argv[])

{

glutInit(&argc, argv);

glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);

glutCreateWindow("GLUT Shapes");

glutDisplayFunc(display);
glutMouseFunc(mouse);   ///mouse event

glutMainLoop();

}

git

week 03-3

老師示範 GitHub 的 Gist功能, 只要在 gist.github.com 裡面 + 新增一個不公開的小程式, 便能經由 embedded 的 HTML JavaScript的方法, 把程式用很漂亮的格式,放在你的 blog 裡。只是你要熟 HTML CSS 才能運作順利。

學生心得:巨難 完全看不懂

week 03-4

畫個兔子利用 mouse 來幫忙描點
在 void mouse() 裡面 if(state==GLUT_DOWN) 再印出你換算出來的座標, 便能幫你寫出程式碼

#include <GL/glut.h>
#include <stdio.h>
float X=0, Y=0;
void display()

{
    ///glutSolidTeapot(0.3);
    glBegin(GL_POLYGON);
    glVertex2f(0.007, -0.040);
    glVertex2f(0.007, -0.040);
    glVertex2f(0.007, -0.040);
    glVertex2f(0.007, -0.040);
    glVertex2f(0.007, -0.040);
    glVertex2f(0.000, 0.007);
    glVertex2f(0.000, 0.007);
    glVertex2f(0.000, 0.007);
    glVertex2f(0.000, 0.007);
    glVertex2f(0.000, 0.007);
    glVertex2f(-0.220, 0.147);
    glVertex2f(-0.253, 0.067);
    glVertex2f(-0.300, -0.033);
    glVertex2f(-0.293, -0.100);
    glVertex2f(-0.260, -0.187);
    glVertex2f(-0.227, -0.227);
    glVertex2f(-0.133, -0.227);
    glVertex2f(0.200, -0.213);
    glVertex2f(0.267, -0.167);
    glVertex2f(0.293, -0.127);
    glVertex2f(0.280, -0.007);
    glVertex2f(0.220, 0.133);
    glVertex2f(0.193, 0.167);
    glVertex2f(0.133, 0.153);
    glVertex2f(0.040, 0.180);
    glVertex2f(-0.020, 0.193);
    glVertex2f(-0.140, 0.160);
    glVertex2f(-0.220, 0.160);
    glEnd();
    glBegin(GL_POLYGON);
    glVertex2f(-0.207, 0.140);
    glVertex2f(-0.233, 0.173);
    glVertex2f(-0.267, 0.233);
    glVertex2f(-0.300, 0.353);
    glVertex2f(-0.320, 0.440);
    glVertex2f(-0.320, 0.547);
    glVertex2f(-0.300, 0.613);
    glVertex2f(-0.233, 0.647);
    glVertex2f(-0.207, 0.620);
    glVertex2f(-0.187, 0.527);
    glVertex2f(-0.180, 0.433);
    glVertex2f(-0.180, 0.313);
    glVertex2f(-0.153, 0.260);
    glVertex2f(-0.147, 0.187);
    glVertex2f(-0.133, 0.160);
    glVertex2f(-0.107, 0.133);
    glEnd();
    glBegin(GL_POLYGON);
    glVertex2f(0.093, 0.147);
    glVertex2f(0.100, 0.187);
    glVertex2f(0.120, 0.227);
    glVertex2f(0.140, 0.373);
    glVertex2f(0.140, 0.440);
    glVertex2f(0.140, 0.520);
    glVertex2f(0.147, 0.560);
    glVertex2f(0.153, 0.640);
    glVertex2f(0.193, 0.700);
    glVertex2f(0.233, 0.700);
    glVertex2f(0.247, 0.627);
    glVertex2f(0.253, 0.573);
    glVertex2f(0.253, 0.487);
    glVertex2f(0.253, 0.400);
    glVertex2f(0.240, 0.267);
    glVertex2f(0.233, 0.167);
    glVertex2f(0.220, 0.127);
    glVertex2f(0.180, 0.053);
    glEnd();
    glutSwapBuffers();

}

void mouse(int button, int state, int x, int y)
{
    float X = (x-150)/150.0;
    float Y = -(y-150)/150.0;
    if(state==GLUT_DOWN)
    {
        printf("    glVertex2f(%.3f, %.3f);\n", X, Y);
    }
}
int main(int argc, char *argv[])

{

glutInit(&argc, argv);

glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);

glutCreateWindow("GLUT Shapes");

glutDisplayFunc(display);
glutMouseFunc(mouse);

    glutMainLoop();

}




沒有留言:

張貼留言