2015-04-20 62 views
0

我在opengl中有一些對象,對象是在x位置查看,我想讓它在y位置查看如何使它成爲? 即在y位置的代碼OPENGL C#更改對象視圖

Gl.glBegin(Gl.GL_TRIANGLES); 


for (iogl = 0; (iogl <= 360); iogl = (iogl + 3)) 
      { 
       Gl.glColor3f(1, 0, 0); 
       Gl.glVertex3f(4 * (float)Math.Sin(Math.PI/180 * iogl), 4 * (float)Math.Cos(Math.PI/180 * iogl), 25); 
       Gl.glVertex3f(4 * (float)Math.Sin(Math.PI/180 * (iogl + 20)), 4 * (float)Math.Cos(Math.PI/180 * (iogl + 20)), 25); 
       Gl.glVertex3f(0, 0, 35); 
     } 
     Gl.glEnd(); 
     Gl.glBegin(Gl.GL_QUADS); 
     for (iogl = 0; (iogl <= 359); iogl++) 
     { 
      //Tabung 
      Gl.glColor3f(1, 1, 1); 
      Gl.glVertex3f(4 * (float)Math.Sin(Math.PI/180 * iogl), 4 * (float)Math.Cos(Math.PI/180 * iogl), 25); 
      Gl.glVertex3f(4 * (float)Math.Sin(Math.PI/180 * (iogl + 30)), 4 * (float)Math.Cos(Math.PI/180 * (iogl + 30)), 25); 
      Gl.glVertex3f(4 * (float)Math.Sin(Math.PI/180 * iogl), 4 * (float)Math.Cos(Math.PI/180 * iogl), 6); 
      Gl.glVertex3f(4 * (float)Math.Sin(Math.PI/180 * (iogl + 30)), 4 * (float)Math.Cos(Math.PI/180 * (iogl + 30)), 6); 





     } 
     Gl.glEnd(); 


     Gl.glBegin(Gl.GL_QUADS); 
     for (iogl = 0; (iogl <= 359); iogl++) 
     { 
      //Merah Tengah 
      Gl.glColor3f(1, 0, 0); 
      Gl.glVertex3f(4 * (float)Math.Sin(Math.PI/180 * iogl), 4 * (float)Math.Cos(Math.PI/180 * iogl), 6); 
      Gl.glVertex3f(4 * (float)Math.Sin(Math.PI/180 * (iogl + 30)), 3 * (float)Math.Cos(Math.PI/180 * (iogl + 30)), 6); 

      Gl.glVertex3f(3 * (float)Math.Sin(Math.PI/180 * iogl), (3) * (float)Math.Cos(Math.PI/180 * iogl), 3); 
      Gl.glVertex3f(3 * (float)Math.Sin(Math.PI/180 * (iogl + 20)), (3) * (float)Math.Cos(Math.PI/180 * (iogl + 20)), 3); 


     } 
     Gl.glEnd(); 

     Gl.glBegin(Gl.GL_QUADS); 
     for (iogl = 0; (iogl <= 359); iogl++) 
     { 
      //PUTIH Belakang 
      Gl.glColor3f(1, 1, 1); 
      Gl.glVertex3f(3 * (float)Math.Sin(Math.PI/180 * iogl), 3 * (float)Math.Cos(Math.PI/180 * iogl), 3); 
      Gl.glVertex3f(3 * (float)Math.Sin(Math.PI/180 * (iogl + 20)), 3 * (float)Math.Cos(Math.PI/180 * (iogl + 20)), 3); 
      Gl.glVertex3f(3 * (float)Math.Sin(Math.PI/180 * iogl), 3 * (float)Math.Cos(Math.PI/180 * iogl), -20); 
      Gl.glVertex3f(3 * (float)Math.Sin(Math.PI/180 * (iogl + 20)), 3 * (float)Math.Cos(Math.PI/180 * (iogl + 20)), -20); 
     } 
     Gl.glEnd(); 



     Gl.glBegin(Gl.GL_POLYGON); 
     for (iogl = 0; (iogl <= 359); iogl++) 
     { 
      //putih alas Belakang 
      Gl.glColor3f(1, 1, 1); 
      Gl.glVertex3f(3.5f * (float)Math.Sin(Math.PI/180 * iogl), 3.5f * (float)Math.Cos(Math.PI/180 * iogl), -20); 
      Gl.glVertex3f(3.5f * (float)Math.Sin(Math.PI/180 * (iogl + 20)), 3.5f * (float)Math.Cos(Math.PI/180 * iogl + 20), -20); 
      Gl.glVertex3f(3.5f * (float)Math.Sin(Math.PI/180 * iogl), 3.5f * (float)Math.Cos(Math.PI/180 * iogl), -25); 
      Gl.glVertex3f(3.5f * (float)Math.Sin(Math.PI/180 * (iogl + 20)), 3.5f * (float)Math.Cos(Math.PI/180 * iogl + 20), -25); 
     } 
     Gl.glEnd(); 



     Gl.glBegin(Gl.GL_POLYGON); 
     for (iogl = 0; (iogl <= 360); iogl = (iogl + 90)) 
     { 
      Gl.glColor3f(1, 0, 0); 
      Gl.glVertex3f(0, 0, -25); 
      Gl.glVertex3f(0, 10 * (float)Math.Sin(Math.PI/180 * iogl), -17); 
      Gl.glVertex3f(10 * (float)Math.Cos(Math.PI/180 * iogl), 0, -25); 
      Gl.glVertex3f(0, 0, -25); 
      Gl.glVertex3f(10 * (float)Math.Cos(Math.PI/180 * iogl), 0, -17); 
      Gl.glVertex3f(0, 10 * (float)Math.Sin(Math.PI/180 * iogl), -25); 
     } 
     Gl.glEnd(); 

在這些地方對象斧子的位置,我想使它(站立者)的截圖我應該怎麼添加到代碼

ScreenShot

回答

0

在你的情況下,你需要繞着Z軸旋轉你的火箭90度,使它站在Y軸上。

如果你把這一行放在你發佈的代碼的開頭,它應該可以工作。

GL.Rotate(90.0f, 0.0f, 0.0f, 1.0f); 
+0

thx工作 –

+0

@UnidentifiedZ如果它的工作,你能標記爲答案? –

0

撥打電話以glTranslatef函數開頭。這將乘以矩陣,並且您繪製的所有內容都將與已轉換的座標相關。