How can I find minimum distance between cone and a point ?

Cone properties :
position - $(0,0,z)$
radius - $R$
height - $h$

Point properties:
position - $(0,0,z_1)$

  • $\begingroup$ Are you only interested in the given trivial case or one for any point? $\endgroup$ – Karolis Juodelė Nov 25 '12 at 12:42
  • $\begingroup$ @KarolisJuodelė any point $\endgroup$ – jques Nov 25 '12 at 12:57

I assume a right cone.

Put all shapes into a cylindrical coordinate system $(\phi, r, h)$, such that the axis of the cone satisfies $r = 0$. Now, by symmetry of cone, you can throw away $\phi$ and work in two dimensions.

You now have an isosceles triangle with point $A$ at the top and $B$ on the bottom, closer to the given point $X$. Now, the distance is given by $$\begin{cases}0 & X_h \geq B_h \wedge \vec{X}\cdot \vec{n} < \vec{A} \cdot \vec{n} \\B_h - X_h& X_h < B_h \wedge X_r < B_r \\AX^2-\Big(\frac{\vec{AX}\cdot\vec{AB}}{AB} \Big)^2 & \vec{AX}\cdot\vec{AB} \geq 0 \wedge \vec{BX}\cdot\vec{BA} \geq 0 \\ \min \{AX, BX\}& otherwise\end{cases}$$

Here $X_h, X_r$ indicate the two coordinates of $X$, $\cdot$ is the inner product and $\vec{n}$ is a normal of $AB$ pointing outwards.

It is surely a mess, but I don't know is anything cleaner can be expected.


Similar to @KarolisJuodelė, we assume a right cone. and work in a 2D coordinate system (r,h).

Let the opening angle be $2\phi$, with $\phi = tan^{-1} ( \frac{r}{h} )$.

For any point X = ($X_r,X_h$), The answer is:



We would like to know the distance along the normal a point is from the surface of a right cone oriented along the z-axis. See figure 1.

Figure 1

Here, d is the distance along the normal to point X. W is the intersection of the normal with the Z axis. h and r are the dimensions of the cone. Intuitively, since the normal is orthogonal to the surface of the cone, we see that we can calculate $d = \Vert X - W \Vert - (h-W_h)sin\phi$.

Working in 2D (r,h) with the cone aligned on the h axis for simplicity.

  1. $d = \Vert X - W \Vert - (h-W_h)sin\phi$
  2. $d = \sqrt{(X_r-W_r)^2+(X_h-W_h)^2} - (h-W_h)sin\phi$

W is along the h axis, so $W_r=0$. Also, we can see that the slope of the normal is $\frac{r}{h}=tan\phi$, because the slope is orthogonal to the surface. We rewrite $W_h$ in terms of X. $W_h = X_h-X_r tan\phi$. We continue, substituting for W.

  1. $d = \sqrt{X_r^2+(X_h-X_h+X_rtan\phi)^2} - (h-X_h+X_rtan\phi)sin\phi$
  2. $d = \sqrt{X_r^2(1+tan^2\phi)} - (h-X_h+X_rtan\phi)sin\phi$
  3. $d = X_rsec\phi-(h-x_h)sin\phi-X_r(\frac{sin^2\phi}{cos\phi})$
  4. $d = X_r(\frac{1-sin^2\phi}{cos\phi})-(h-x_h)sin\phi$
  5. $d = X_rcos\phi-(h-X_h)sin\phi$

This can be intuitively seen using similar triangles as shown in figure 2.

enter image description here


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.