tikz-3dplotで正二十面体を出力してみる

2024/11/01に公開

こんにちは、沙代です。
正多面体を出力したくなることってありますよね。実は前回の続きです。

MacOS Montery 12.6.2 (M1 Pro)
lualatex 1.15.0

tl;dr

main.tex
% lualatex main.tex
\documentclass[tikz,border=10pt]{standalone}
\usepackage{tikz-3dplot}

\begin{document}

\tdplotsetmaincoords{90}{30}

\begin{tikzpicture}[tdplot_main_coords,scale=3]

        % Vertices of the icosahedron
        \coordinate (A) at (0, 0, 1);
        \coordinate (B) at (0.894, 0, 0.447);
        \coordinate (C) at (0.276, 0.851, 0.447);
        \coordinate (D) at (-0.724, 0.526, 0.447);
        \coordinate (E) at (-0.724, -0.526, 0.447);
        \coordinate (F) at (0.276, -0.851, 0.447);
        \coordinate (G) at (0.724, 0.526, -0.447);
        \coordinate (H) at (-0.276, 0.851, -0.447);
        \coordinate (I) at (-0.894, 0, -0.447);
        \coordinate (J) at (-0.276, -0.851, -0.447);
        \coordinate (K) at (0.724, -0.526, -0.447);
        \coordinate (L) at (0, 0, -1);

        % Drawing edges
        \draw[thick] (A) -- (B);
        \draw[thick] (A) -- (C);
        \draw[thick] (A) -- (D);
        \draw[thick] (A) -- (E);
        \draw[thick] (A) -- (F);
        \draw[thick] (B) -- (C);
        \draw[thick] (C) -- (D);
        \draw[thick] (D) -- (E);
        \draw[thick] (E) -- (F);
        \draw[thick] (F) -- (B);
        \draw[thick] (B) -- (G);
        \draw[thick] (C) -- (G);
        \draw[thick] (C) -- (H);
        \draw[thick] (D) -- (H);
        \draw[thick] (D) -- (I);
        \draw[thick] (E) -- (I);
        \draw[thick] (E) -- (J);
        \draw[thick] (F) -- (J);
        \draw[thick] (F) -- (K);
        \draw[thick] (B) -- (K);
        \draw[thick] (G) -- (H);
        \draw[thick] (H) -- (I);
        \draw[thick] (I) -- (J);
        \draw[thick] (J) -- (K);
        \draw[thick] (K) -- (G);
        \draw[thick] (L) -- (G);
        \draw[thick] (L) -- (H);
        \draw[thick] (L) -- (I);
        \draw[thick] (L) -- (J);
        \draw[thick] (L) -- (K);

\end{tikzpicture}

\end{document}

コード解説

コードはChatGPTに生成させました!(ごめんなさい😞)
手打ちとか大変そうだったので、つい。。。

\usepackage{tikz-3dplot}
ここでパッケージを読み込んでいます。

\tdplotsetmaincoords{90}{30}
ここは視点を設定しています。後ほどいじってみます。

\coordinate
点の名前をつけます。(正二十面体は頂点は12個です)

\draw[thick]
点と点の間に線を引きます。(正二十面体は辺は30本です)

視点をいじる

\tdplotsetmaincoords{<elevation>}{<azimuth>}
  1. 高度角 (<elevation>)
  • 定義: 視点がXY平面(水平面)からどれだけ上または下に向いているかを決定します。
  • 範囲: 一般的に -90°から90°の範囲で設定します。
    • 0°: 視点がXY平面に平行。Z軸方向からの高さがない状態。
    • 90°: 視点が真上(Z軸正方向)から見下ろす。
    • -90°: 視点が真下(Z軸負方向)から見上げる。
  1. 方位角 (<azimuth>)
  • 定義: 視点がZ軸を中心にXY平面上で回転する角度を決定します。
  • 範囲: 0°から360°までの範囲で設定します。
    • 0°: 視点がX軸正方向からの方向。
    • 90°: 視点がY軸正方向からの方向。
    • 180°: 視点がX軸負方向からの方向。
    • 270°: 視点がY軸負方向からの方向。

真上からでなく、もう少し斜めからみたいので、調整してみましょう。

調整前
\tdplotsetmaincoords{90}{30}
調整後
\tdplotsetmaincoords{45}{30}

美しいですね。。

Discussion