Solved

Multiplying by Modelview Matrix Gives Unexpected result

Posted on 2008-06-17
5
1,041 Views
Last Modified: 2013-12-26
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);

Open in new window

0
Comment
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
  • Learn & ask questions
  • 3
  • 2
5 Comments
 
LVL 2

Author Comment

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

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

Accepted Solution

by:
NovaDenizen earned 150 total points
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

by:Jamsb
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

by:Jamsb
ID: 31467925
Exactly what I wanted.
0
 
LVL 22

Expert Comment

by:NovaDenizen
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

On Demand Webinar - Networking for the Cloud Era

This webinar discusses:
-Common barriers companies experience when moving to the cloud
-How SD-WAN changes the way we look at networks
-Best practices customers should employ moving forward with cloud migration
-What happens behind the scenes of SteelConnect’s one-click button

Question has a verified solution.

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

Suggested Solutions

Title # Comments Views Activity
Vertex form of the function 8 87
Homework Math Question 1 126
statistics basics sources 2 41
how does a seed know what it is when planted? 10 45
Foreword (May 2015) This web page has appeared at Google.  It's definitely worth considering! https://www.google.com/about/careers/students/guide-to-technical-development.html How to Know You are Making a Difference at EE In August, 2013, one …
Article by: Nicole
This is a research brief on the potential colonization of humans on Mars.
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…

726 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question