Still celebrating National IT Professionals Day with 3 months of free Premium Membership. Use Code ITDAY17

x
Solved

# Multiplying by Modelview Matrix Gives Unexpected result

Posted on 2008-06-17
Medium Priority
1,051 Views
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);
``````
0
Question by:Jamsb
[X]
###### Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

• Help others & share knowledge
• Earn cash & points
• 3
• 2

LVL 2

Author Comment

ID: 21803397
That's twice I've posted wrongly.

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

LVL 22

Accepted Solution

ID: 21813276
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

LVL 2

Author Comment

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

LVL 2

Author Closing Comment

ID: 31467925
Exactly what I wanted.
0

LVL 22

Expert Comment

ID: 21816875
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

## Featured Post

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

How to Win a Jar of Candy Corn: A Scientific Approach! I love mathematics. If you love mathematics also, you may enjoy this tip on how to use math to win your own jar of candy corn and to impress your friends. As I said, I love math, but I gu…
We are taking giant steps in technological advances in the field of wireless telephony. At just 10 years since the advent of smartphones, it is crucial to examine the benefits and disadvantages that have been report to us.
Although Jacob Bernoulli (1654-1705) has been credited as the creator of "Binomial Distribution Table", Gottfried Leibniz (1646-1716) did his dissertation on the subject in 1666; Leibniz you may recall is the co-inventor of "Calculus" and beat Isaac…
I've attached the XLSM Excel spreadsheet I used in the video and also text files containing the macros used below. https://filedb.experts-exchange.com/incoming/2017/03_w12/1151775/Permutations.txt https://filedb.experts-exchange.com/incoming/201…
###### Suggested Courses
Course of the Month7 days, 19 hours left to enroll