Shortest Distance on Sphere Formula
I am trying to determine the shortest distance
between a point and the surface of a sphere. The only way I have
to do it now is a brute force method where I find the distance
between the point and a ton of actual points on the surface of
the sphere, then take the minimum of these. However, I would
much rather have some equations that I could use.
If I have a point, (X,Y,Z), and a sphere, x^2+y^2+z^2 = R^2 (or
similarly (x-a)^2+(y-b)^2+(z-c)^2 = R^2) ... is there a formula
for the distance between the two? Ideally, I would like to be
able to find this distance given the point, (X,Y,Z), the sphere
radius, R, and the sphere center, (a,b,c). So I would end up with
a function: D = f(X,Y,Z,a,b,c,R)
I do not know about a formula, but here is an algorithm:
Draw a line through the center of the sphere and the point (X,Y,Z).
This line will intersect the surface of the sphere at the point closest
to the point (X,Y,Z).
Beamline Controls & Data Acquisition Group
Advanced Photon Source, Argonne National Lab.
Hmmm... interesting question.
My guess would be to find the minimum distance between the center of the
sphere and the point (call that D1) and then the minimum distance between
the surface of the sphere and the point would just be D1 - R, where R is the
radius of the sphere.
D1 is fairly easy to find (the minimum distance between two points in
space). See http://en.wikipedia.org/wiki/Euclidean_distance for the
I hope that helps!
Todd Clark, Office of Science
US Department of Energy
Here is a pretty good way to do it. First let me restate the question so
we're certain I understand what you are asking. "Given a sphere in space
and a point outside the sphere, what is the shortest distance between
the point and the surface of the sphere."
We can make the problem much easier to solve by putting the center of
the sphere at the origin. The point will be at some coordinates in
space, (X,Y,Z). Thus the distance from that point to the origin is
distance = the_square_root_of (X^2 + Y^2 + Z^2) = (X^2 + Y^2 + Z^2)^(1/2)
Now, if the sphere is centered at the origin, then the distance from the
origin to any point on the surface is just the radius of the sphere R.
Thus, let us look at the line connecting the point in space to the
origin. That line passes through the surface of the sphere, and is
perpendicular to the surface. Since the distance from the origin to the
surface is just the radius R, then the distance between the point in
space and the surface is :
distance_point_to_sphere = (X^2 + Y^2 + Z^2)^(1/2) - R
To extend this to a sphere at arbitrary positions in space is pretty
straight forward too.
First, think of two points out in space, one at (X,Y,Z) and the other at
(a,b,c). What is the distance between these two points?
distance_between_two_points = ( (X-a)^2 + (Y-b)^2 + (Z-c)^2 ) ^ (1/2)
now, if the center of the second point (a,b,c) is the center of the
sphere, then the distance along the line connecting the two points is
just the radius of the sphere R. so the distance between point (X,Y,Z)
and the surface is
distance_point_to_sphere = ( (X-a)^2 + (Y-b)^2 + (Z-c)^2 ) ^ (1/2) - R
Michael S. Pierce
Materials Science Division
Argonne National Laboratory
Click here to return to the Mathematics Archives
Update: June 2012