2022年3月24日 星期四

鯉魚-Week 05

· 課堂範例:https://jsyeh.org/3dcg10/


1、下載win32以及data的範例檔案,解壓縮



2、將data資料夾移動到window資料夾中



3、點開Transformation.exe



4、右鍵可更換模型



·Rotation旋轉

1、安培右手定則 判斷旋轉位置



·實作

1、利用上週的基本程式碼,插入函式來轉動茶壺



2、mouse motion 加入mouse互動,旋轉滑鼠,茶壺會跟著旋轉



3、改良上個程式



4、複習mouse程式&GL_LINE_LOOP



5、改良上個程式,把mouse函式改成motion函式,可利用滑鼠連續畫線

#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 motion(int mouseX,int mouseY)
{
        N++;
        x[N-1]=mouseX;
        y[N-1]=mouseY;
        printf("現在按下滑鼠,得到新座標 %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("week05 mouse Motion");

    glutDisplayFunc( display );
    glutMotionFunc(motion);
    glutMainLoop();
}

沒有留言:

張貼留言