TikZ作品集「共通接線」

個人的な TikZ ソース置き場です。

TikZ作品集などと大げさなタイトルをつけましたが、TeX + TikZ で図を書いたときの個人的な保管庫です。CloudLaTeX 上で作って、ここに保管し、必要なときに取り込んで使っています。精度より見た目を優先です。

アイキャッチ「共通接線」

共通接線が4本になる図をベースに繰り返し処理を入れてアレンジしてみました。このページのアイキャッチです。プリントには使えませんが、こんな遊びも出来るということで。

\documentclass[dvipdfmx,border=2mm]{standalone}
\usepackage{tikz}
\usetikzlibrary{calc,intersections,through,backgrounds}
\usepackage{tkz-euclide}

\begin{document}
\scalebox{5}{
 \begin{tikzpicture}[scale=1]
  %% ----- 点の定義 ----- %%
  % 中心O, 半径OAの円
  \tkzDefPoint(0,0){O}
  \tkzDefPoint(3,0){A}
  % 中心O', 半径O'Bの円
  \tkzDefPoint(6,0){O'}
  \tkzDefPoint(4,0){B}
  % 内側でクロスする接点の交点Iを取得
  \tkzDefSimilitudeCenter[int](O,A)(O',B)
  \tkzGetPoint{I}
  % Iから2つの円に接線を引いたときの接点C,D および C',D' を取得
  \tkzDefLine[tangent from = I](O,A)
  \tkzGetPoints{C}{D}
  \tkzDefLine[tangent from = I](O',B)
  \tkzGetPoints{C'}{D'}
  % 外側の接線の交点J
  \tkzDefSimilitudeCenter[ext](O,A)(O',B)
  \tkzGetPoint{J}
  % Jから2つの円に接線を引いたときの接点E,F および E',F' を取得
  \tkzDefLine[tangent from = J](O,A)
  \tkzGetPoints{E}{F}
  \tkzDefLine[tangent from = J](O',B)
  \tkzGetPoints{E'}{F'}
  %% ----- 図形の描画 ----- %%
  % 円2つ
  \tkzDrawCircle[very thick,black](O,A)
  \tkzDrawCircle[very thick,black](O',B)
  %内側でクロスする接線
  \tkzDrawSegments[very thick,red,add=.6 and .6](C,C' D,D')
  % 外側の接線を描画
  \tkzDrawSegments[very thick,blue,add=.5 and .45](E,E' F,F')
  % 点を描画
  \tkzDrawPoints[size=3,color=red](C,D,C',D')
  \tkzDrawPoints[size=3,color=blue](E,F,E',F')
  %% ----- 装飾 ----- %%
  \foreach \i in {0,1,2,...,39} {
   \tkzDefPoint(3-\i*0.06,0){P}
   \tkzDrawCircle[opacity=1-\i*0.025](O,P)
   \tkzDefPoint(4+\i*0.04,0){Q}
   \tkzDrawCircle[opacity=1-\i*0.025](O',Q)
   \tkzDefSimilitudeCenter[int](O,P)(O',Q)
   \tkzGetPoint{R}
   \tkzDefLine[tangent from = R](O,P)
   \tkzGetPoints{PX}{PY}
   \tkzDefLine[tangent from = R](O',Q)
   \tkzGetPoints{QX}{QY}
   \tkzDrawSegments[red,opacity=1-\i*0.025,add=.6 and .6](PX,QX PY,QY)
   \tkzDefSimilitudeCenter[ext](O,P)(O',Q)
   \tkzGetPoint{R}
   \tkzDefLine[tangent from = R](O,P)
   \tkzGetPoints{PX}{PY}
   \tkzDefLine[tangent from = R](O',Q)
   \tkzGetPoints{QX}{QY}
   \tkzDrawSegments[blue,opacity=1-\i*0.025,add=.5 and .45](PX,QX PY,QY)
  }
 \end{tikzpicture}
}
\end{document}

公式など説明に使う図として

共通接線4本(外部)

\documentclass[dvipdfmx,border=2mm]{standalone}
\usepackage{tikz}
\usetikzlibrary{calc,intersections,through,backgrounds}
\usepackage{tkz-euclide}

\begin{document}
\scalebox{5}{
 \begin{tikzpicture}[scale=1]
  %% ----- 点の定義 ----- %%
  % 中心O, 半径OAの円
  \tkzDefPoint(0,0){O}
  \tkzDefPoint(3,0){A}
  % 中心O', 半径O'Bの円
  \tkzDefPoint(7,0){O'}
  \tkzDefPoint(5,0){B}
  % 内側でクロスする接点の交点Iを取得
  \tkzDefSimilitudeCenter[int](O,A)(O',B)
  \tkzGetPoint{I}
  % Iから2つの円に接線を引いたときの接点C,D および C',D' を取得
  \tkzDefLine[tangent from = I](O,A)
  \tkzGetPoints{C}{D}
  \tkzDefLine[tangent from = I](O',B)
  \tkzGetPoints{C'}{D'}
  % 外側の接線の交点J
  \tkzDefSimilitudeCenter[ext](O,A)(O',B)
  \tkzGetPoint{J}
  % Jから2つの円に接線を引いたときの接点E,F および E',F' を取得
  \tkzDefLine[tangent from = J](O,A)
  \tkzGetPoints{E}{F}
  \tkzDefLine[tangent from = J](O',B)
  \tkzGetPoints{E'}{F'}
  %% ----- 図形の描画 ----- %%
  % 円2つ
  \tkzDrawCircle[very thick,black](O,A)
  \tkzDrawCircle[very thick,black](O',B)
  %内側でクロスする接線
  \tkzDrawSegments[very thick,red,add=.5 and .5](C,C' D,D')
  % 外側の接線を描画
  \tkzDrawSegments[very thick,blue,add=.5 and .5](E,E' F,F')
  % 点を描画
  \tkzDrawPoints[size=3,color=red](C,D,C',D')
  \tkzDrawPoints[size=3,color=blue](E,F,E',F')
  %% ----- 確認用ラベル ----- %%
%  \tkzDrawPoints[size=3,orange](O,O')
%  \tkzLabelPoints(O,O')
%  \tkzDrawPoints[size=3,orange](A,B)
%  \tkzLabelPoint[left](A){A}
%  \tkzLabelPoint[right](B){B}
%  \tkzLabelPoints[above left](C,C')
%  \tkzLabelPoints[above right](D,D')
%  \tkzLabelPoints[below](E,E')
%  \tkzLabelPoints[above](F,F')
%  \tkzLabelPoint[below,yshift=-3pt](I){I}
 \end{tikzpicture}
}
\end{document}

共通接線3本(外接)

\documentclass[dvipdfmx,border=2mm]{standalone}
\usepackage{tikz}
\usetikzlibrary{calc,intersections,through,backgrounds}
\usepackage{tkz-euclide}

\begin{document}
\scalebox{5}{
 \begin{tikzpicture}[scale=1]
  %% ----- 点の定義 ----- %%
  % 中心O, 半径OAの円
  \tkzDefPoint(0,0){O}
  \tkzDefPoint(3,0){A}
  % 中心O', 半径O'Aの円
  \tkzDefPoint(5,0){O'}
  % 内側でクロスする接点の交点Iを取得
  \tkzDefSimilitudeCenter[int](O,A)(O',A)
  \tkzGetPoint{I}
  % 外側の接線の交点J
  \tkzDefSimilitudeCenter[ext](O,A)(O',A)
  \tkzGetPoint{J}
  % Jから2つの円に接線を引いたときの接点E,F および E',F' を取得
  \tkzDefLine[tangent from = J](O,A)
  \tkzGetPoints{E}{F}
  \tkzDefLine[tangent from = J](O',A)
  \tkzGetPoints{E'}{F'}
  %% ----- 図形の描画 ----- %%
  % 円2つ
  \tkzDrawCircle[very thick,black](O,A)
  \tkzDrawCircle[very thick,black](O',A)
  %内側でクロスする接線(Iにおける共通接線)
  \tkzDefRadicalAxis(O,I)(O',I)
  \tkzGetPoints{X}{Y}
  \tkzDrawLine[very thick,red,add=.5 and .5](X,Y)
  % 外側の接線を描画
  \tkzDrawSegments[very thick,blue,add=.7 and .5](E,E' F,F')
  % 点を描画
  \tkzDrawPoints[size=3,color=red](I)
  \tkzDrawPoints[size=3,color=blue](E,F,E',F')
  %% ----- 確認用ラベル ----- %%
%  \tkzDrawPoints[size=3,orange](O,O')
%  \tkzLabelPoints(O,O')
%  \tkzDrawPoints[size=3,orange](A,B)
%  \tkzLabelPoint[left](A){A}
%  \tkzLabelPoints[below](E,E')
%  \tkzLabelPoints[above](F,F')
%  \tkzLabelPoint[right](I){I}
 \end{tikzpicture}
}
\end{document}

共通接線2本(2点で交わる)

\documentclass[dvipdfmx,border=2mm]{standalone}
\usepackage{tikz}
\usetikzlibrary{calc,intersections,through,backgrounds}
\usepackage{tkz-euclide}

\begin{document}
\scalebox{5}{
 \begin{tikzpicture}[scale=1]
  %% ----- 点の定義 ----- %%
  % 中心O, 半径OAの円
  \tkzDefPoint(0,0){O}
  \tkzDefPoint(3,0){A}
  % 中心O', 半径O'Bの円
  \tkzDefPoint(4,0){O'}
  \tkzDefPoint(6,0){B}
  % 外側の接線の交点J
  \tkzDefSimilitudeCenter[ext](O,A)(O',B)
  \tkzGetPoint{J}
  % Jから2つの円に接線を引いたときの接点E,F および E',F' を取得
  \tkzDefLine[tangent from = J](O,A)
  \tkzGetPoints{E}{F}
  \tkzDefLine[tangent from = J](O',B)
  \tkzGetPoints{E'}{F'}
  %% ----- 図形の描画 ----- %%
  % 円2つ
  \tkzDrawCircle[very thick,black](O,A)
  \tkzDrawCircle[very thick,black](O',B)
  % 外側の接線を描画
  \tkzDrawSegments[very thick,blue,add=.9 and .5](E,E' F,F')
  % 点を描画
  \tkzDrawPoints[size=3,color=blue](E,F,E',F')
  %% ----- 確認用ラベル ----- %%
%  \tkzDrawPoints[size=3,orange](O,O')
%  \tkzLabelPoints(O,O')
%  \tkzDrawPoints[size=3,orange](A,B)
%  \tkzLabelPoint[left](A){A}
%  \tkzLabelPoint[left](B){B}
%  \tkzLabelPoints[below](E,E')
%  \tkzLabelPoints[above](F,F')
 \end{tikzpicture}
}
\end{document}

共通接線1本(内接)

\documentclass[dvipdfmx,border=2mm]{standalone}
\usepackage{tikz}
\usetikzlibrary{calc,intersections,through,backgrounds}
\usepackage{tkz-euclide}

\begin{document}
\scalebox{5}{
 \begin{tikzpicture}[scale=1]
  %% ----- 点の定義 ----- %%
  % 中心O, 半径OAの円
  \tkzDefPoint(0,0){O}
  \tkzDefPoint(3,0){A}
  % 中心O', 半径O'Aの円
  \tkzDefPoint(1,0){O'}
  % 外側の接線の交点J
  \tkzDefSimilitudeCenter[ext](O,A)(O',A)
  \tkzGetPoint{J}
  %% ----- 図形の描画 ----- %%
  % 円2つ
  \tkzDrawCircle[very thick,black](O,A)
  \tkzDrawCircle[very thick,black](O',A)
  % 外側の接線を描画
  \tkzDefRadicalAxis(O,J)(O',J)
  \tkzGetPoints{X}{Y}
  \tkzDrawSegment[very thick,blue,add=.4 and .4](X,Y)
  \tkzDrawPoint[size=3,blue](J)
  %% ----- 確認用ラベル ----- %%
%  \tkzDrawPoints[size=3,orange](O,O')
%  \tkzLabelPoints(O,O')
%  \tkzDrawPoint[size=3,orange](A)
%  \tkzLabelPoint[left](A){A}
%  \tkzLabelPoint[right](J){J}
 \end{tikzpicture}
}
\end{document}

共通接線なし(内部)

\documentclass[dvipdfmx,border=2mm]{standalone}
\usepackage{tikz}
\usetikzlibrary{calc,intersections,through,backgrounds}
\usepackage{tkz-euclide}

\begin{document}
\scalebox{5}{
 \begin{tikzpicture}[scale=1]
  %% ----- 点の定義 ----- %%
  % 中心O, 半径OAの円
  \tkzDefPoint(0,0){O}
  \tkzDefPoint(3,0){A}
  % 中心O', 半径O'Bの円
  \tkzDefPoint(.7,0){O'}
  \tkzDefPoint(2.7,0){B}
  %% ----- 図形の描画 ----- %%
  % 円2つ
  \tkzDrawCircle[very thick,black](O,A)
  \tkzDrawCircle[very thick,black](O',B)
  %% ----- 確認用ラベル ----- %%
%  \tkzDrawPoints[size=3,orange](O,O',A,B)
%  \tkzLabelPoints(O,O')
%  \tkzLabelPoint[right](A){A}
%  \tkzLabelPoint[left](B){B}
 \end{tikzpicture}
}
\end{document}

円2個と共通接線1本

半径2の円Oと半径5の円O$’$が外接している。下の図のように, 直線が2点A, Bで2つの円と接しているとき,線分ABの長さを求めよ。

\documentclass[dvipdfmx,border=2mm]{standalone}

\usepackage{tikz}
\usetikzlibrary{calc,intersections,through,backgrounds}
\usepackage{tkz-euclide}

\begin{document}
\scalebox{5}{
 \begin{tikzpicture}[scale=.4]
  %% ----- 点を定義 ----- %%
  % 中心O, 半径OXの円
  \tkzDefPoint(0,0){O}
  \tkzDefPoint(2,0){X}
  % 中心O', 半径O'Xの円
  \tkzDefPoint(7,0){O'}
  % 外側の接線の交点J
  \tkzDefSimilitudeCenter[ext](O,X)(O',X)
  \tkzGetPoint{J}
  % Jから2つの円に接線を引いたときの接点
  \tkzDefLine[tangent from=J](O,X)
  \tkzGetPoints{A}{A'}
  \tkzDefLine[tangent from=J](O',X)
  \tkzGetPoints{B}{B'}
  %% ----- 図形を描画 ----- %%
  % 円2つ
  \tkzDrawCircle[thick](O,X)
  \tkzDrawCircle[thick](O',X)
  % 直角記号
  \tkzMarkRightAngle[size=.5,fill=red!10!white](O,A,B)
  \tkzMarkRightAngle[size=.5,fill=red!10!white](O',B,A)
  % 点
  \tkzDrawPoints[size=3,fill=black](O,O')
  % 線分
  \tkzDrawSegments[thick](O,A O',B)%中心から接点へ                                                                 
  \tkzDrawSegment[very thick,add=0.4 and .8](A,B)
  %% ----- ラベル ----- %%
  \tkzLabelPoint[above,xshift=-2pt,yshift=1pt](A){A}
  \tkzLabelPoint[above,xshift=-2pt](B){B}
  \tkzLabelPoint[below](O){O}
  \tkzLabelPoint[below,xshift=2pt](O'){O$'$}
  \tkzLabelSegment[left,xshift=2pt,yshift=-4pt](O,A){2}
  \tkzLabelSegment[right](O',B){5}
 \end{tikzpicture}
}
\end{document}

半径3の円Oと半径2の円O$’$が外接している。下の図のように, 直線が2点A, Bで2つの円と接しているとき,線分ABの長さを求めよ。

\documentclass[dvipdfmx,border=2mm]{standalone}

\usepackage{tikz}
\usetikzlibrary{calc,intersections,through,backgrounds}
\usepackage{tkz-euclide}

\begin{document}
\scalebox{5}{
 \begin{tikzpicture}[scale=.6]
  %% ----- 点を定義 ----- %%
  % 中心O, 半径OAの円
  \tkzDefPoint(0,0){A}
  \tkzDefPoint(0,3){O}
  % 中心O', 半径O'Bの円
  \tkzDefPoint(2*sqrt(6),0){B}
  \tkzDefPoint(2*sqrt(6),2){O'}
  % ABの右側に点C
  \tkzDefShiftPoint[B](3,0){C}
  %% ----- 図形を描画 ----- %%
  \tkzDrawCircle[thick](O,A)
  \tkzDrawCircle[thick](O',B)
  \tkzDrawSegments[thick](O,A O',B)
  \tkzDrawPoints[size=2,fill=black](O,O')
  \tkzMarkRightAngle[size=.4,fill=red!10!white](O,A,B)
  \tkzMarkRightAngle[size=.4,fill=red!10!white](O',B,C)
  \tkzDrawSegment[very thick,add=.8 and .7](A,B)
  %% ----- ラベル ----- %%
  \tkzLabelPoint[above](O){O}
  \tkzLabelPoint[above,xshift=2pt](O'){O$'$}
  \tkzLabelPoint[below](A){A}
  \tkzLabelPoint[below](B){B}
  \tkzLabelSegment[left](O,A){3}
  \tkzLabelSegment[left](O',B){2}
 \end{tikzpicture}
}
\end{document}

ますどら編集後記

今度こそ途中で挫折しないように、色々残しておこうと思います。病的に「最初からやりなおしたい病」なので。

It’s New!「ますどら」更新情報♫

ますどら更新情報です。直近6本の記事をリストアップしています。

Now Listening!「笑うマトリョーシカ」早見和真

この前に聞いていた「店長がバカすぎて」が好きすぎて同じ作者さんで探したら、なんとテレビドラマ「笑うマトリョーシカ」を書かれた方だと知ってビックリ。しかも「ロイヤルファミリー」も同じ方。これは聞くしかないと思ってオーディブルで聞いています。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です