Minimum Distance From A Point To A Plane Tutorial
by bkenwright@xbdev.net

Both methods generate the same solution, but its how you think about solving
it....one method uses a parametric line view of it, the other things more in
terms of planes and the plane equation.
...Using Method 1....
o Step 1.
Lets make some assumptions first, n is our plane normal, and its normalised.
So |n|=1.
P1 to P0 = P1P0 = P0-P1
And P1 is a point on our plane.
d is the shortest distance from our point P0 to the plane
o Step 2.

This gives us:
d = n dot |P0 - P1|
o Step 3.
Now d is a distance, its a value, not a vector. So we still need to
determine the point Px on the plane. We use our n direction value to know
which way where going, and combine it with an amplitude so we know how far to
go. (Not forgetting P0 as our starting point)
Px = P0 + d*n
where:
d = n dot |P0-P1|
....Method 2....
For this second method, we sort of work with a non-normalised plane vector
and the plane equation.

As before, our point P0, and we want to find the closest distance to the
plane. Our plane is defined by P1, a ponit on the plane (x,y,z) and the
planes normal n.
Now for a plane, any point on the plane must satisfy the plane equation,
which is:
A x + B y + C z + D = 0
The minimum distance is then the absolute value of:
( A x0 + B y0 + C z0 + D ) / sqrt( A2 + B2
+ C2 )
But ackk...what is that D value?
D is the distance from the plane to the origin.
minimum distance = d = (A (x0 - x1) + B (y0 - y1) + C (z0
- z1)) / sqrt(A2 + B2 + C2)
= ( A x0 + B y0 + C z0 + D ) / sqrt(A2+B2+C2)
= [ (n dot P0) - (n dot P1) ] / sqrt(A2+B2+C2)
= n dot (P0 - P1) / sqrt(A2+B2+C2)
We don't have a normalised normal n for the second method example, which is
why we divide by |n|.
|