More interesting is the case of translation.
When you translate a plane (N,d) by T : you add -T*N to d.
So since it's linear, in terms of matrix, you multiply the plane considered as a vector of 4 dimensions by :
[ 1 0 0 0 ][ 0 1 0 0 ][ 0 0 1 0 ][-Tx -Ty -Tz 1 ]
You see that it does not correspond to the translation matrix used for points :
[ 1 0 0 Tx][ 0 1 0 Ty][ 0 0 1 Tz][ 0 0 0 1 ]
This means that apart pure rotations, you can not multiply a plane (seen as a 1x4 matrix) by a general transformation matrix (used for points and vectors).
In terms of code you need a special function to transform planes.
EDIT : glSmurph just gave this code. Except that he uses the convention origin to plane which gives :
dist(P, Plane) = P.x*Plane.x + P.y*Plane.z + P.x*Plane.x - Plane.d
The minus is unpractical since you can not use the 4D dot product that works so well with SIMD instruction sets. If you use the other convention (the one I use) just replace :
p.d = -_14*t[0] + -_24*t[1] + -_34*t[2] + _44*p.d;
and it's OK. Still, be conscious that this code does not work when the transfo contains scaling.
[Edited by - Charles B on May 30, 2005 5:25:19 PM]