2020年6月23日 星期二

week18 不要在要做期末的時候開古戰場啦==

基本上就是把之前的東西再複習一遍,比較值得注意的是有幾點可以參考的程式碼,而且這次的檔案也放在自己的雲端了:
做TRT的方法:先去把模型移置到中心點,然後TRT中的T就是那個數值。

讓自己可以用方向鍵控制模組(需要事先宣告模組ID):
void special(int key, int x, int y)
{
    if(key==GLUT_KEY_UP) nowID--;
    if(key==GLUT_KEY_DOWN) nowID++;
    if(nowID<0) nowID=0;
    if(nowID>29) nowID=29;
}

讓小黑窗上面顯示現在的座標位置:
oid motion(int x, int y)
{
    if(mode==1){///translate
        posX[nowID]+=(x-oldX)/300.0;
        posY[nowID]-=(y-oldY)/300.0;
        printf("glTranslatef(%.2f, %.2f, %.2f);\n", posX[nowID], posY[nowID], 0);
    }else if(mode==2){
        angleX[nowID]+= x-oldX;
        angleY[nowID]+= y-oldY;
        printf("angleX:%.0f, angleY:%.0f\n", angleX[nowID], angleY[nowID]);
    }
    oldX=x; oldY=y;
    glutPostRedisplay();
}

顯示中心點:
void showAxis()
{
    glutSolidSphere(0.02, 10,10);
    glColor3f(1,0,0);
    glBegin(GL_LINES);
        glVertex3f(0,0,0); glVertex3f( 0.5, 0,0);
        glVertex3f(0,0,0); glVertex3f(-0.5, 0,0);
        glVertex3f(0,0,0); glVertex3f(0, 0.5, 0);
        glVertex3f(0,0,0); glVertex3f(0,-0.5, 0);
        glVertex3f(0,0,0); glVertex3f(0,0, 0.5);
        glVertex3f(0,0,0); glVertex3f(0,0,-0.5);
    glEnd();
    glColor3f(1,1,1);
}

沒有留言:

張貼留言