2013-09-26 1 views
0

Я пытаюсь сделать шестиугольник с 6 треугольниками, используя поворот и перевод. Вместо того, чтобы делать несколько переводов, я вместо этого хочу перевести треугольник вниз один раз и поворачивать вокруг оси Z на 60 градусов шесть раз (мой эскиз может помочь с этим объяснением: http://i.imgur.com/SrrXcA3.jpg). После повторения методов drawTriangle() и rotate() шесть раз, я должен иметь шестиугольник.Как повернуть треугольник вокруг его вершины, расположенный в (0,0,0) в OpenGL 2

В настоящее время мой код выглядит следующим образом:

public void onDrawFrame(GL10 unused) 
{ 
    GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT); //start by clearing the screen for each frame 

    GLES20.glUseProgram(mPerVertexProgramHandle); //tell OpenGL to use the shader program we've compiled 

    //Get pointers to the program's variables. Instance variables so we can break apart code 
    mMVPMatrixHandle = GLES20.glGetUniformLocation(mPerVertexProgramHandle, "uMVPMatrix"); 
    mPositionHandle = GLES20.glGetAttribLocation(mPerVertexProgramHandle, "aPosition"); 
    mColorHandle = GLES20.glGetAttribLocation(mPerVertexProgramHandle, "aColor"); 

    //Prepare the model matrix! 
    Matrix.setIdentityM(mModelMatrix, 0); //start modelMatrix as identity (no transformations) 
    Matrix.translateM(mModelMatrix, 0, 0.0f, -0.577350269f, 0.0f); //shift the triangle down the y axis by -0.577350269f so that its top point is at 0,0,0 
    drawTriangle(mModelMatrix); //draw the triangle with the given model matrix 
    Matrix.rotateM(mModelMatrix, 0, 60f, 0.0f, 0.0f, 1.0f); 
    drawTriangle(mModelMatrix); 
} 

Вот моя проблема: оказывается мой треугольник не вращается вокруг (0,0,0), но вместо этого он вращается вокруг центра треугольника (как показано на рисунке на этой картинке: http://i.imgur.com/oiLFSCE.png).

Можно ли поворачивать треугольник вокруг (0,0,0), где расположена его вершина?

ответ

0

Вы действительно уверены, что ваш постоянный -0.577350269f является правильным значением для центра треугольника?

Также ваш код выглядит незавершенным (вы используете дескриптор mvp, но никогда не используете его в коде), можете ли вы предоставить дополнительную информацию?

Смежные вопросы