Hello,

The simple rule of thumb is, when your transofrmation matrix only involves rotation (orthogonal transformation), then you can easily to get the inverse of that matrix by transpose it. However, if your transformation matrix involves some transformation that is not orthogonal (means not only do a rotation), then you need to do a full calculation to compute the inverse matrix, which means you need to do a expensive call and let D3DXMatrixInverse() to do it for you. Eg, the perceptive transformation is not an orthogonal transformation, but the rotation transformation is an orthogonal transformaion. Is it make sense to you?

@roger_hq

Hi,

First time poster, glad to see these forums gaining members.

On to my question:

I am getting back into 3D programming from moderately long hiatus and am dusting off the Direct3D application I was working on. I am implementing new features such as mouse picking and dragging of geometry, and I am successfully implementing these things but I am having trouble remembering

whycertain matrix operations have to be performed. I google search some of these items and I get a description of what they do to the matrix mathematically, but never the real-world explaination of what it does. So here goes:When I project a geometric point in 3D space to the screen, I need to “invert” the view matrix in order to correctly get the screen space coordinate. So in my D3D implementation, something like this (forgive me if the parameters are not exactly correct, don’t have docs in front of me):

D3DXMatrixInverse(&invertedViewMatrix, NULL, &viewMatrix);

for this, my question is, what is the inverse operation doing to that point? Why do I have to invert the view matrix? I understand that if you take a transform and you multiply it by its inverse, you get the identity matrix. So is using an inverse of a matrix just to “undo” the effects of a matrix?

Another question is using a transpose matrix. When is it appropriate to use a transpose matrix vs. an inverted matrix?

Thanks in advance!

[snapback]21169[/snapback]

Hi,

First time poster, glad to see these forums gaining members.

On to my question:

I am getting back into 3D programming from moderately long hiatus and am dusting off the Direct3D application I was working on. I am implementing new features such as mouse picking and dragging of geometry, and I am successfully implementing these things but I am having trouble remembering

whycertain matrix operations have to be performed. I google search some of these items and I get a description of what they do to the matrix mathematically, but never the real-world explaination of what it does. So here goes:When I project a geometric point in 3D space to the screen, I need to “invert” the view matrix in order to correctly get the screen space coordinate. So in my D3D implementation, something like this (forgive me if the parameters are not exactly correct, don’t have docs in front of me):

D3DXMatrixInverse(&invertedViewMatrix, NULL, &viewMatrix);

for this, my question is, what is the inverse operation doing to that point? Why do I have to invert the view matrix? I understand that if you take a transform and you multiply it by its inverse, you get the identity matrix. So is using an inverse of a matrix just to “undo” the effects of a matrix?

Another question is using a transpose matrix. When is it appropriate to use a transpose matrix vs. an inverted matrix?

Thanks in advance!