# Problem with normals?

Hello,

First, check the images added (foto 1 and 2).
You will se that there’s some parts of the robot where the light isn’t correctly displayed.

You may be thinking about different problems, I will explain the algorithm used as best as I can to see if someone find the problem.

Step 1:
Each joint (part) of the robot is drawed in a different origin of coordinates (Denavit-Hartenberg transformation). So, for each vertex of the joints, we need to make the transformation to:

``````
GLfloat * matrixModel = new GLfloat;
glGetFloatv(GL_MODELVIEW_MATRIX, matrixModel);
//ModelView after the transformation

matrixModel = mCalc.doTranspose(matrixModel);
matrixModel = mCalc.doInverse(matrixModel);

vertexArray = new GLfloat[sizeVertex];
Vertex v;
int i = 0;
int j;
for(j=0;j<vertexVector.size();j++)
{
v = vertexVector[j];  //vertexVector ----> vector<Vertex> type  ---> Vertex is a struct of 3 floats
vertexArray[i] = v.x*matrixModel+v.y*matrixModel+v.z*matrixModel+matrixModel;
//transforming to the new origin coordinantes..
vertexArray[i+1] = v.x*matrixModel+v.y*matrixModel+v.z*matrixModel+matrixModel;
vertexArray[i+2] = v.x*matrixModel+v.y*matrixModel+v.z*matrixModel+matrixModel;
i+=3;
}

``````

After this I do the same with normals except that I don’t apply the calculations to transform it to the new origin coordinantes.
Those arrays are added to VBO and after, I call glDrawArrays(…) (in a different function ofc).

I tryied to apply the calculations to transform it to the new origin coordinantes to the normals but the result is horrible (check foto4).

Do you have any idea?

Thanks