Jump to content
  • Advertisement
Sign in to follow this  
raydog

Inverse plane equation

This topic is 4825 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

If I put the plane equation, Ax+By+Cz+D=0, in a 4x4 matrix, and took the inverse of that matrix, what would that give me? Doing a search for inverse plane equation on Google gives me nothing useful.

Share this post


Link to post
Share on other sites
Advertisement
Exactly then inverse of the matrix. Try multiplying them to see if the product is the identity matrix just to be sure. :*)

Share this post


Link to post
Share on other sites
Yeah, I know it will give me the inverse of the matrix. What I'm trying to get at, is I would like to understand
the meaning behind it.

Is there such a thing as the inverse plane equation?

I'm trying to transform/rotate a plane to some neutral state/position.

What I mean is, given, Ax + By + Cz + D = 0, if I put this in matrix form, M:

1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1

M[1] = plane_normal.x;
M[5] = plane_normal.y;
M[9] = plane_normal.z;
M[13] = -DotProduct( plane_normal, plane_vertex );

Is the inverse of this matrix useful for anything? Or is my logic flawed?

Share this post


Link to post
Share on other sites
I think you may be on the wrong track with the 4x4 matrix. However:
Quote:
I'm trying to transform/rotate a plane to some neutral state/position.
There is probably a solution to this problem, if you can describe more clearly what exactly you're trying to do.

Share this post


Link to post
Share on other sites
I want to rotate a plane (e.g. the vertices that make up the plane) so it has a neutral normal, like (0,1,0).

Can this be done by plugging the plane equation in a matrix and taking its
inverse?

Share this post


Link to post
Share on other sites
Quote:
Original post by raydog
I want to rotate a plane (e.g. the vertices that make up the plane) so it has a neutral normal, like (0,1,0).

Can this be done by plugging the plane equation in a matrix and taking its
inverse?


I don't think so. Although if you want you can rotate your plane on the z axis with 0 angle to make it orthogonal to your y axis.

ie:

x = (1,0,0)
y = (0,1,0)
z = (0,0,1)

So the 3 axes are orthogonal to each other.

If you want your plane to have a normal of let's say (0,1,0) then all you have to do is put your plane on the x,z axis so that it's orthogonal to the y plane.



Share this post


Link to post
Share on other sites
Guest Anonymous Poster
It is easy to transform a plane equation by a transformation matrix. You just need to write the equations symbolically and make the substitutions.
He is how for direct tranfomation.
Say M is a rotation matrix composed of a rotation R (3x3) matrix plus translation vector T

Matrix M will transform a point Q to P by:

1) P = Q * M = Q * R + T

Now say you have a plane equation

2) N % Transp(P) + d = 0;

N = a vector perpendicular to the plane surface,
d = the distance from the plane to the origin
Transp (P) is the transpose of vector P
% is the operation Dot product

Replacing equation 1 in 2 you get

N % [Transp (Q * R + T)] + d = 0

Now with some algebraic manipulation

N % [Transp (Q * R) + Transp (T)] + d = 0
N % Transp (Q * R) + N % Transp (T)] + d = 0
N % Transp (R) * Transp (Q) + N % Transp (T) + d = 0
[N % Transp (R)] * Transp (Q) + N % Transp (T) + d = 0

but Nr = N % Transp (R) is the inverse rotation of N by rotation matrix R.
dt = N % Transp (T) + d is the evaluation of the translation part of the matrix on the

Nr * Transp (Q) + dt = 0

I will let you do your own Inverse Transformation as an exercise

Share this post


Link to post
Share on other sites
Quote:
Original post by Anonymous Poster
Nr * Transp (Q) + dt = 0


If Q is a point, and Transp() means Transpose, then how exactly does one take the Transpose
of a point? Matrix transposition is swapping rows for cols, but what is a point transposition?

Maybe a real-number example might clear things up.

Share this post


Link to post
Share on other sites
Quote:
If Q is a point, and Transp() means Transpose, then how exactly does one take the Transpose of a point? Matrix transposition is swapping rows for cols, but what is a point transposition?
It's the same thing, but you have only one row or column, which becomes one column or row. Example:

[x y z]

Transposed, becomes:

[x]
[y]
[z]

Choosing one or the other has to do with rules of matrix multiplication. It looks like the AP is using row vectors in his example, so:

A*transpose(B)

Is the same as A.B (dot product). Also:

transpose(A)*B

Is a tensor product, but I don't think that came up in the example.

I'm not positive about this, but it looks like the AP is using dot product notation (% in his example) already, so the transposes may be redundant, in which case you can probably just ignore them. (I would have to look through the example more carefully to be sure, though...)

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!