2015-04-20 4 views
0

У меня есть некоторый объект в opengl, объект является видом в позиции x, я хочу, чтобы он отображался в позиции y, как это сделать? , что это кодOPENGL C# Change Object View

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

В вашем случае вам необходимо повернуть рацию на 90 градусов вокруг оси Z, чтобы она стояла на оси y.

Если вы поместите эту строку в начале кода, который вы опубликовали, он должен работать.

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

thx, который работал –

+0

@UnidentifiedZ если это сработало, не могли бы вы отметить как ответ? –

0

Совершение вызова до glTranslatef функция в начале. Это умножило бы матрицу, и все, что вы рисуете, будет относиться к переведенным координатам.