Hello guys!
What is the easiest and simplest way to transform plane given as:
ax + by + cz + d = 0
by 4x4 OpenGL compatible matrix?
Thanks.
Hello guys!
What is the easiest and simplest way to transform plane given as:
ax + by + cz + d = 0
by 4x4 OpenGL compatible matrix?
Thanks.
Multiply the homogenous plane vector (a, b, c, d) by the inverse transpose modelview matrix…
Thank you!!!
Could you explain the theory behind such solution?
I don’t really understand why inversed transformation is required
It’s really simple vector math:
Assume you have a plane p = (a, b, c, d) and a vector v = (x, y, z, w), both in column vector form. The vector lies on the plane if p.v == 0.
Written as matrix multiplication this is pt . v == 0 (pt being p transposed).
Now you want to transform the plane by the matrix M. That is you want a new plane p’ such that, for each vector v on the original plane p, M.v lies on the new plane p’, that is:
0 == p’t.M.v == pt.v
From that follows that p’t.M must be equal p. Multiply this with M^-1 from right on both sides gives:
p’t == pt.M^-1
Transpose on both sides:
p’ == Mt^-1 . p
Thank you for a great explanation, now that makes sense to me