任意の点を通る円の接線を求める

HOME>>メモ>>図形処理の基礎>>任意の点を通る円の接線を求める

接線の方程式を利用する

任意の点を通る円の接線を求めてみます。 まずは、原点中心とした半径$r$の円と、点P$(x_\mathrm{P}, y_\mathrm{P})$を考えましょう。

点と円

この円周上の任意の点A$(x_\mathrm{A},y_\mathrm{A})$を通る接線は「円の接線を求める」で求めたように

\[ x_\mathrm{A}x + y_\mathrm{A}y - r^2 = 0 \]

です。この直線が点Pを通ることから

\[ x_\mathrm{A}x_\mathrm{P} + y_\mathrm{A}y_\mathrm{P} - r^2 = 0 \]

が得られます。また、点Aは円周上の点であるので

\[ x_\mathrm{A}^2 + y_\mathrm{A}^2 = r^2 \]

です。したがって、次の連立方程式を点Aの座標について解けばよいことがわかります。

\begin{eqnarray*} x_\mathrm{A}x_\mathrm{P} + y_\mathrm{A}y_\mathrm{P} - r^2 &=& 0 \\ x_\mathrm{A}^2 + y_\mathrm{A}^2 &=& r^2 \end{eqnarray*}

この連立方程式をよくみると、直線と円の交点を求める問題になっています。 「直線と円の交点を求める」の結果を使って具体的に求めると次のようになります。

\begin{eqnarray*} x_\mathrm{A} &=& r\frac{x_\mathrm{P}r \pm y_\mathrm{P} \sqrt{(x_\mathrm{P}^2+y_\mathrm{P}^2)-r^2}}{x_\mathrm{P}^2+y_\mathrm{P}^2} \\ y_\mathrm{A} &=& r\frac{y_\mathrm{P}r\mp x_\mathrm{P} \sqrt{(x_\mathrm{P}^2+y_\mathrm{P}^2)-r^2}}{x_\mathrm{P}^2+y_\mathrm{P}^2} \end{eqnarray*}

こうして求めた点Aを通る接線が求めたい直線となります。

極線の方程式を利用する

極線とは「一点から二次曲線に弦を無数に引いたとき、弦の両端における二本の接線の交点を結んでできる直線(大辞泉より)」です。 円の場合、点Pを通る接線を引き、そのときできた2つの接点を結んだ直線、直線A-A'を「点Pを極とする極線」といいます。 この極の方程式は次のようにあらわすことができます。

\[ x_\mathrm{P}x + y_\mathrm{P}y - r^2 = 0 \]

円の接線を求める」で求めた接線の方程式とまったく同じ形ですね。 この方程式は点Pが円周上にあるときは接線を、円周上にないときは極線をあらわすというわけです。

極線は2つの接点を通るので、極線と円の交点が接点となります。したがって

\begin{eqnarray*} x_\mathrm{P}x + y_\mathrm{P}y - r^2 &=& 0 \\ x^2 + y^2 &=& r^2 \end{eqnarray*}

の解が接点の座標です。よく見るとこれは接線の方程式を利用した場合と同じ形をしています。 これからどちらの方法でも同じ結果が得られることが確認できました。

実際にやってみよう

実際にやってみました。 SVGにJavascriptを埋め込んで簡単なアニメーションを作ってみました。 SVGファイルをダウンロードする

残念ながら現在使用しているブラウザでは表示できません。 IE以外のブラウザの最新版をダウンロードしてください。