임의의 점에서 원추면까지의 최단 거리를 찾는 방법
2294 단어 수학
소개
"한 점에서 원추면까지의 최단 거리를 구하는 방법"을 검색해도 특별히 정리되지 않은 것 같기 때문에 해법을 정리했습니다.
일단, 수학적인 해법만 싣습니다만, 모처럼 Qiita에 주기 때문에 나중에 Python 혹은 C++에서의 프로그램 예도 쓰려고 합니다.
문제
다음 원뿔을 사용하여 생각합니다.
임의점 A(X, Y, Z)로부터 원뿔 표면까지의 최단 거리를 구해 갑니다.
원뿔의 중심축과 모선이 이루는 각도는 φ입니다.
Step 1
먼저 점 A와 원뿔의 중심 O를 통과하는 평면에서 원뿔을 자릅니다. 이 평면을 A-A '라고합니다.
x축과 평면 A-A'가 이루는 각도를 θyaw로 둡니다.
이것을 xy 평면에 수직 방향으로 보면 다음 그림과 같습니다.
θyaw는 다음 식으로 나타낼 수 있습니다.
$$\theta_{yaw} = tan\frac{Y}{X}$$
Step 2
A-A '평면에서 자른 단면도는 아래 그림입니다.
여기서 점 A에서 모선까지 수직선을 그려 그 선과 모선과의 교점을 점 B로 합니다.
OB의 단위 벡터 $\frac{\vec{OB}}{|\vec{OB}|}$를 ${\bf b}$로 가정합니다.
${\bf b}$는 다음 식으로 표현할 수 있습니다.
{\bf b} =
\left(
\begin{matrix}
sin\phi cos\theta_{yaw} \\
sin\phi sin\theta_{yaw} \\
cos\phi
\end{matrix}
\right)
그림에서 알 수 있듯이 점 A와 원뿔의 최단 거리 문제는 점 A와 모선의 최단 거리 문제로 대체 할 수 있습니다.
Step 3
마지막은 벡터를 사용하여 풀어갑니다.
$\vec{OB}┻\vec{BA}$이므로,
$${\bf b}\cdot\vec{BA} = 0 $$
여기서,
\begin{eqnarray}
\vec{BA} &=& \vec{OA} - \vec{OB} \\
&=& \vec{OA} - t{\bf b} \ (tは媒介変数)
\end{eqnarray}
라고 표현할 수 있습니다.
따라서,
\begin{eqnarray}
{\bf b}\cdot \vec{BA} &=& {\bf b}\cdot (\vec{OA}-t{\bf b}) \\
&=& {\bf b}\cdot \vec{OA}-t = 0
\end{eqnarray}
됩니다.
$$\therefore t = {\bf b}\cdot\vec{OA}$$
따라서 $\vec{BA}$는 $\vec{BA}=\vec{OA}-t{\bf b}$가 되고 그 크기가 요구되는 거리가 됩니다.
Reference
이 문제에 관하여(임의의 점에서 원추면까지의 최단 거리를 찾는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/FluffyHernia/items/dbc29b27c441e721edd7텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)