その他一覧へ戻る

連成振動パラパラ漫画

鉄TeX機能紹介/TikZサンプル/連成振動パラパラ漫画.tex鉄TeX機能紹介 / TikZhybrid

レンダリング結果

101ページ / 同名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}

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

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

\foreach \t in {0,1,...,1000}{
\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}
%%% 左壁
\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) {};
%%% 座標計算
\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) -- (a-left);
\draw[spring={\右端座標/3 + \v - \u}] (a-right) -- (b-left);
\draw[spring={\右端座標/3 - \v}] (b-right) -- (c-left);
\end{tikzpicture}
\end{center}
\newpage
}

\end{document}