Format:
1. Ax + By + Cz + D = 0;
2. dot(n, p) + d = 0, d = - dot(n, p) //p = {x, y, z}
3. dot(L, P) = 0 // L = [n, d], //P = {x, y, z, 1}, the same as p in homogenous space
Proof:
3:
dot(L, P) = dot(n,p) + d = 0 //according to 2
Relationship with arbitary point p:
if dot(n, p) + d = 0 ; p is on plane
if dot(n, p) + d > 0 ; p is on positive half plane (positive means the same direction as normal)
if dot(n, p) + d < 0 ; p is on negative half space
distance from p to plane: abs(dot(n,p) + d) / length(n)
distance from origin: abs(d) / length(n)
proof:
assume arbitary point p0 on plane
dot(n,p0p) = dot(n,p) - dot(n,p0) = dot(n,p) + d, // we can get proof for second and third conclusion by this
distance will be po0 project onto n, which will be:
abs(dot(n, p0p) )/ length(n)
Transfrom
We can transform n and an arbitary point to get our new plane, have nothing to say about this way.
We can also transfrom L=[n,d] directory to get out new plane, the result is
L' = inverse(transpose(T))L
proof:
dot(L, P) = 0 ===> transpose(L) P = 0 // matrix version of dot, here we use column vector
===> transpose(L')P' = 0
===> transpose(L')TP = 0
===>transppose(L) = transpose(L')T
===>L = transpose(T)L'
===>L' = inverse(transpose(T))
Or just think L is 4d normal.