その他一覧へ戻る

連成振動パラパラ漫画(文字付き)

鉄TeX機能紹介/TikZサンプル/連成振動パラパラ漫画(文字付き).tex鉄TeX機能紹介 / TikZhybrid

レンダリング結果

1000ページ / 同名PDFあり
連成振動パラパラ漫画(文字付き) preview
連成振動パラパラ漫画(文字付き) preview
連成振動パラパラ漫画(文字付き) preview

先頭3ページのみプレビューしています。

PDFを開く
TeXソース
TeXソース
入力コード
%%%% コンパイル後,次のコマンドでアニメーション生成
%%%% convert -delay 0.5 -loop 0 -density 300 -debug all -alpha remove 連成振動パラパラ漫画.pdf animation.gif
%%%% ただしアニメGIF化するときには100ページくらいに抑えておこう。
\documentclass[a5j,10pt,twoside]{tetsujsarticle}
\usepackage{tetsuryoku}
\余白設定[
上余白=0.5truecm,
下余白=上余白,
左余白=0truecm,
左右差=0truecm,
ヘッダの縦幅=0truept,
ヘッダ下端と本文上端の縦間隔=0truept,
ヘッダと本文を仕切る線の太さ=0truept,
本文下端とフッタ下端の縦間隔=0truept,
本文とフッタを仕切る線の太さ=0truept,
傍注領域の幅=0zw,
本文端と傍注領域との間隔=0truept,
]
\カスタム用紙サイズ{縦=3cm,横=15cm}
\begin{document}

\def\壁の高さ{2}
\def\壁の厚み{0.2}
\def\右端座標{10}
\def\バネの直線部{0.2}
\def\座標軸のy座標{-0.7}

\tikzset{wall/.style={pattern = north east lines}}
\tikzset{ball/.style={circle,shade,outer color=black!90!white,inner color=white,inner sep=2.5mm,label={$m$}}}
\tikzset{spring/.style={decorate,decoration={aspect=0.4, segment length=#1, amplitude=2mm,coil}}}
\tikzset{springk/.style={label={$k$},yshift=2}}

\def\A{1}
\def\B{0.8}
\def\OMEGA{0.1}

\foreach \t in {0,1,...,999}{
\FPeval\u{\A*cos(\OMEGA*\t)+\B*sin(1.73*\OMEGA*\t)}
\FPeval\v{\A*cos(\OMEGA*\t)-\B*sin(1.73*\OMEGA*\t)}
\begin{center}
\begin{tikzpicture}[>=stealth]
%%% 左壁
\coordinate (左壁の右下) at (0,-.5*\壁の高さ);
\coordinate (左壁の左上) at ($(左壁の右下) + (-\壁の厚み,\壁の高さ)$);
\fill[wall] (左壁の右下) rectangle (左壁の左上);
\draw[thick] (左壁の右下) -- (左壁の右下 |- 左壁の左上);
%%% 右壁
\coordinate (右壁の左下) at (\右端座標,-.5*\壁の高さ);
\coordinate (右壁の右上) at ($(右壁の左下) + (\壁の厚み,\壁の高さ)$);
\fill[wall] (右壁の左下) rectangle (右壁の右上);
\draw[thick] (右壁の左下) -- (右壁の左下 |- 右壁の右上);
%%% ボール
\node[ball] (a) at (\右端座標/3 + \u,0) {};
\node[ball] (b) at (2*\右端座標/3 + \v,0) {};
%%% 座標
\draw[->] (0.5,\座標軸のy座標) -- +(\右端座標-1,0);
\draw[dotted,thick] (\右端座標/3,\座標軸のy座標-0.3) -- +(0,1.6)
              (2*\右端座標/3,\座標軸のy座標-0.3) -- +(0,1.6)
              (a.south |- 左壁の右下) -- (a.south)
              (b.south |- 左壁の右下) -- (b.south)
;
\draw[->] (\右端座標/3,\座標軸のy座標-0.15) --node[below] {$x_1$} +(\u,0);
\draw[->] (2*\右端座標/3,\座標軸のy座標-0.15) --node[below] {$x_2$} +(\v,0);
%%% 座標計算
\coordinate (0) at (0,0);
\coordinate (0-right) at (\バネの直線部,0);
\coordinate (a-left) at ($(a.west) + (0.1-\バネの直線部,0)$);
\coordinate (a-right) at ($(a.east) + (\バネの直線部,0)$);
\coordinate (b-left) at ($(b.west) + (0.1-\バネの直線部,0)$);
\coordinate (b-right) at ($(b.east) + (\バネの直線部,0)$);
\coordinate (c-left) at (\右端座標 + 0.1-\バネの直線部,0);
\coordinate (c) at (\右端座標,0);
%%% バネの直線部
\draw (0) -- (0-right)
      (a-left) -- (a.west)
      (a.east) -- (a-right)
      (b-left) -- (b.west)
      (b.east) -- (b-right)
      (c-left) -- (c);
%%% バネのグルグル部
\draw[spring={\右端座標/3 + \u}] (0-right) -- node[springk]{} (a-left);
\draw[spring={\右端座標/3 + \v - \u}] (a-right) -- node[springk]{} (b-left);
\draw[spring={\右端座標/3 - \v}] (b-right) -- node[springk]{} (c-left);
\end{tikzpicture}
\end{center}
\newpage
}

\end{document}