Multiplying by Modelview Matrix Gives Unexpected result

In a previous question (http://www.experts-exchange.com/Programming/Game/3D_Prog./Q_23489987.html)
I asked how to find the coordinates of an object after undergoing a transform.

To do this I had to multiply the point I wanted to translate by the modelview matrix. The issue is that the values I get back are the opposite to what's occuring on the screen. ie. if the objects are rotated clockwise on the screen the results I get back are moving anticlockwise.

Do I need to Invert the modelview matrix or somthing like that? Could someone provide code to aid me in this?

``````//function to do multiplication

#include <gl/gl.h>

void MultiplyVMatrix(GLfloat* Vertex, GLfloat* Matrix, GLfloat* ResultMatrix)
{

for(int i=0;i<16;i++)
ResultMatrix[i/4]+=Matrix[i]*Vertex[i%4];

}

**************************************************************
//modelview matrix and multiply co-ordinate of cube

GLfloat matrix[16];
GLfloat vertex[4]={1,2,-5,1}; //any co-ordinate for testing
GLfloat resultmatrix[4]={0,0,0,0};

glGetFloatv(GL_MODELVIEW_MATRIX, matrix); //grab the modelview matrix

MultiplyVMatrix(vertex,matrix,resultmatrix);
``````
LVL 2
Who is Participating?

x

Commented:
I think your problem is that you think the matrix is in row major order, but it is actually in column major order.

see http://www.opengl.org/sdk/docs/man/xhtml/glLoadMatrix.xml to see this illustrated.

That would mean that tou want ResultMatrix[i%4] += Matrix[i]*Vertex[i/4]
0

Author Commented:
That's twice I've posted wrongly.

*Correction*
GLfloat vertex[4]={1,2,-5,1};
0

Author Commented:
I feel so stupid now! Its hard trying to imagine what's going wrong with all this Matrix math!  Thanks very much :)
0

Author Commented:
Exactly what I wanted.
0

Commented:
The only reason I know to look for this is that I did something very similar a few weeks ago, so don't feel too bad.
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.