Assuming you want to find the coordinates of any point in the plane, in terms of the coordinates (u, v) ...
If the point [x0, y0, z0] lies in the plane, then we know that
dot([a,b,c],[x0,y0,z0]) = -d
Where point is the point product between two vectors. It just rewrites the equation of the plane.
The trick is to find two vectors that span the flat subspace. To do this, choose a random vector of length 3. Name it V0. I will call the flat normal vector
N = [a,b,c]
Next, use the transverse product of the normal vector N with V0.
V1 = cross(N,V0)
This vector will be orthogonal to the normal vector if we were not extremely unsuccessful, and N and V0 were collinear. In this case, just select another random vector V0. We can say whether these two vectors were collinear, because then V1 will be the vector [0 0 0].
So, if V1 is not a zero vector, then we divide each element by the norm of V1. The norm of the vector is simply the square root of the sum of the squares of the elements.
V1 = V1/norm(V1)
Next, we choose the second vector V2, orthogonal to both N and V1. Again, a cross-product vector makes this trivial. Normalize this vector to have a unit length. (Since we now know that V1 is a unit norm vector, we could simply divide by the norm (N).)
V2 = cross(N,V1) V2 = V2/norm(V2)
ANY point in the plane can now be described trivially as a function of (u, v), since:
[x0,y0,z0] + u*V1 + v*V2
For example, when (u, v) = (0,0), we obviously get [x0, y0, z0] back, so we can think of this point as βoriginβ in the coordinates (u, v).
Similarly, we can do things like restore u and v from any point [x, y, z], which, as you know, lies in a plane, or we can find a normal projection for a point that is not in a plane, projected into this plane.