133 views (last 30 days)

Show older comments

Let's say : a plane N contain a set of 3d coordinate data (A).

A=[x1 y1 z1

x2 y2 z2

x3 y3 z3

........]

plane N is determined by normal vector (n) and center coordinate (P0).

I have a point X(x0,y0,z0) which is located outside plane N. How can I find perpendicular distance from point X to plane N?

Note: I know how to find the normal vector(n) and P0 from the set of data A.

John D'Errico
on 7 Dec 2017

Edited: John D'Errico
on 7 Dec 2017

You need to understand what the equation of a plane tells you.

A plane is defined by a point on the plane (P0), and the normal vector to the plane(N). Thus any point on the plane X satisfies the constraint

dot(X-P0,N) = 0

If the normal vector has unit length, so it is normalized to have norm(N)==1, then the solution to your problem is trivial.

The distance to the plane is then simple. It is just:

dot(X-P0,N)

If a point lies on the plane, then the distance to the plane is 0. And that is embodied in the equation of a plane that I gave above!

Finally, you might recognize that the above dot product is simply computed using the function dot, but even more simply written as a matrix multiply, if you have more than one point for which you need to compute this distance.

John D'Errico
on 15 Dec 2017

Yes ... and that is the dot product that I referred to. As I said in my last paragraph, you can use just a matrix multiply. Abs handles the issue that a point can be on one side of the plane or the other. So the sign tells you where the point is relative to the normal vector.

I wrote it using the dot function to make the idea of a dot product clear.

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!