4
$\begingroup$

So let's assume I have a point $P$ in $3D$ space $(x_0, y_0, z_0)$. And I have a circle $C$ that is centered at $(x_1, y_1, z_1)$ with a radius $r$. I need to find the distance from $P$ to the nearest point of $C$. I'm not totally sure how to define a circle in $3D$ space, so suggestions there would help too :D

I really have very little idea where to begin with this (and I only have a very basic understanding of how to do the same thing with a point and a line). I haven't taken a math class in a number of years, but this concept will help tremendously in some $3D$ programming I'm working on.

  • 0
    @user6312, I thought that might be the case. Unfortunately I don't know how to define a circle unambiguously in 3d. In my program, I'm able to define the circle with respect to the x and y axes and then rotate it as needed.2011-04-05

2 Answers 2

4

Project the point onto the plane in which the circle lies. Then take the distance to the circle's centre, subtract the radius and take the absolute value to get the distance within the plane. Then you get the total distance from the distance to the plane and the distance within the plane using Pythagoras.

  • 0
    That should be $\max(0,d-r)$.2011-04-05
0

You need 3 features to define a 3D circle:

center (point)

orientation (direction vector perpendicular to plane of circle3D)

radius (positive scalar)

You need to be clear whether you're interested in the nearest point to P on the disk or the circle edge.

If you know how to set up 3D coordinate rotations and translations, you can greatly simplify the problem by adopting transforms that place the circle at the origin and flat in the z == 0 plane. You apply these desired coordinate translate and coordinate rotate transforms to point P ==>> P' ++> P". Now, with this idealized case, you should be able to solve the problem of the closest point on the circle.

Don't forget to inverse-transform your solution point Psol" ==> Psol' ==> Psol so that it comes out in starting coordinates.