2011-04-03 43 views
1

我的代碼如下;我想獲得按下按鍵後在平面上移動的三角形的座標位置。如果我的代碼錯誤,請糾正它。我是OpenGL的初學者。檢測飛機上三角形物體的位置

float rot=90; 
float forwd=0; 
float uprwd=0; 

switch (key) { 

    case 'q': 

    exit(0); 

    break; 

    case 'a': 
     { 


      forwd-=0.2; 

     } 
    break; 

    case 'd': 
     { 


      forwd+=0.2; 

     } 
    break; 


    case 'w': 
     { 


      uprwd+=0.2; 

     } 
    break; 

    case 's': 
     { 


      uprwd-=0.2; 

     } 
    break; 
    case 'r': 
     { 


      rot+=20; 

     } 
    break; 

    case 't': 
     { 


      rot-=20; 

     } 
    break; 

} 

void display (void) { 
{ 
    glPushMatrix(); 

    glLoadIdentity(); 

    glTranslatef(forwd,uprwd,-6); 

    glRotatef(rot, 0.0, 0.0, 1.0); 



    glBegin(GL_TRIANGLES);  

    glVertex3f(0.2, 0.0, 0.0); 

    glVertex3f(0.0, 0.2, 0.0); 

    glVertex3f(0.0, 0.0, 0.2); 


    glEnd(); 

    glPopMatrix(); 
    glutSwapBuffers();   
} 

我怎麼能找到飛機上的三角形的座標位置?它也在飛機上旋轉和移動。謝謝。

回答

1

當您旋轉和/或翻譯三角形時,您正在更改其座標。例如,glTransltef和glRotatef將變換矩陣應用到三角形的基本位置(0.2,0.0,0.0)。如果您打算跟蹤三角形的新位置,則還必須將這些轉換(Rotation Matrix,Translation)應用於正在跟蹤三角形座標的矢量。

+0

我猜猜它,但我會如何控制代碼,你可以給我想法PLZ? – 2011-04-03 04:54:06

+0

那麼,一種方法就是滾動你自己的函數,在你的座標向量上做翻譯/旋轉。它背後的數學不需要大量的工作。如果你在三維(X,Y,Z)上旋轉,你可以使你的旋轉函數應用x = rcos(theta)sin(phi),y = rsin(theta)sin(phi),z = rcos PHI)。 – AndyG 2011-04-03 05:05:17