入試の時期が近くなると、Tikzで図を描くことが多くなる。立体図を簡単に描くに便利な tikzlibrary についてのメモ。
例えば、立方体の一部を切り取った次のような図形を描くとする。

A1〜A4、B1〜B4の点の座標は、次のように指定する。$x$座標、$y$座標の中で$\sin$や$\cos$を用いるときには、波括弧で括っておく。
\coordinate (A1) at (0,0);
\coordinate (A2) at (10,0);
\coordinate (A3) at ({5*cos(30)+10},{5*sin(30)});
\coordinate (A4) at ({5*cos(30)},{5*sin(30)});
\coordinate (B1) at (0,10);
\coordinate (B2) at (10,10);
\coordinate (B3) at ({5*cos(30)+10},{5*sin(30)+10});
\coordinate (B4) at ({5*cos(30)},{5*sin(30)+10});
一方、C1はB1とB2の中点、C2はB2とA2の中点、C3はB2とB3の中点となっているので、ベクトル的に座標を決めたいときには、\usetikzlibrary{calc} を用いて、次のように指定する。
\coordinate (C1) at ($0.5*($(B1)+(B2)$)$);
\coordinate (C2) at ($0.5*($(A2)+(B2)$)$);
\coordinate (C3) at ($0.5*($(B2)+(B3)$)$);
$(B1)+(B2)$ を座標計算し、その座標の値を$X$とする。
次に$0.5*(X)$の座標計算し、その座標の値を$Y$とする。
座標の計算をするところを💲マークで挟む形で計算ができる。
座標を決めれば、あとは直線で結ぶ。
\draw[line width=2pt,blue] (C2)--(A2)--(A3)--(B3)--(C3)--(C2)--(C1)--(C3);
\draw[line width=2pt,violet] (C1)--(B1)--(B4)--(B3);
\draw[line width=2pt,red] (B1)--(A1)--(A2);
\draw[line width=1pt,dotted] (B4)--(A4)--(A3);
\draw[line width=1pt,dotted] (A1)--(A4);
\draw(C1) circle(5pt);
コードの全体は以下のようになる。
\documentclass[uplatex]{jsarticle}
\usepackage[utf8]{inputenc}
\usepackage[dvipdfmx]{graphicx}
\usepackage{tikz}
\usetikzlibrary{calc}
\begin{document}
\begin{center}
\begin{tikzpicture}[scale=0.3]
\coordinate (A1) at (0,0);
\coordinate (A2) at (10,0);
\coordinate (A3) at ({5*cos(30)+10},{5*sin(30)});
\coordinate (A4) at ({5*cos(30)},{5*sin(30)});
\coordinate (B1) at (0,10);
\coordinate (B2) at (10,10);
\coordinate (B3) at ({5*cos(30)+10},{5*sin(30)+10});
\coordinate (B4) at ({5*cos(30)},{5*sin(30)+10});
\coordinate (C1) at ($0.5*($(B1)+(B2)$)$);
\coordinate (C2) at ($0.5*($(A2)+(B2)$)$);
\coordinate (C3) at ($0.5*($(B2)+(B3)$)$);
\draw[line width=2pt,blue] (C2)--(A2)--(A3)--(B3)--(C3)--(C2)--(C1)--(C3);
\draw[line width=2pt,violet] (C1)--(B1)--(B4)--(B3);
\draw[line width=2pt,red] (B1)--(A1)--(A2);
\draw[line width=1pt,dotted] (B4)--(A4)--(A3);
\draw[line width=1pt,dotted] (A1)--(A4);
\draw(C1) circle(5pt);
\draw (A1) node[below]{A1};
\draw (A2) node[below]{A2};
\draw (A3) node[below]{A3};
\draw (A4) node[below]{A4};
\draw (B1) node[above]{B1};
\draw (B2) node[below]{B2};
\draw (B3) node[above]{B3};
\draw (B4) node[above]{B4};
\draw (C1) node[above]{C1};
\draw (C2) node[left]{C2};
\draw (C3) node[below right]{C3};
\draw[fill=green] (B2) circle(8pt);
\end{tikzpicture}
\end{center}
\end{document}
