TikZでanimation
フレームごとにSVGが作られる
TikZでanimationする図を作ろうと検索したときに出てくる情報は全てこれ https://scrapbox.io/files/65b709d364c88e0025f56ae1.svg
code:animation.tikz(tex)
\usetikzlibrary{animations}
\begin{document}
\begin{tikzpicture}[
animate/orbit/.style 2 args = {
myself:shift = {
along = {
repeats }} ]
2s = "red",
4s = "orange",
repeats}
{Sun};
\end{scope}
\useasboundingbox (-3.8,-3.8) (3.8,3.8);
\end{tikzpicture}
\end{document}
最近できた機能なせいか、ほとんど検索結果に引っかからない
構文
:<animation attribute>={<options>}
[animate={myself:<animation attribute>={<options>}}]の略記法
正式な記法
[animate=<animation specification>]
<animation specification>に色々いれる
[animate={myself:<animation attribute>={<options>}}]は[animate={object=myself,attribulte=<animation attribute>,<options>}]の略記
公式サンプルをいろいろ動かしてみる
<animation attribute>にanimationしたいoption nameを入れ、<options>に時刻とoption valueを指定するというかんじか
0s = "red", 2s = "blue"と複数点でoptionを指定すると、よしなにsmoothingしてくれる
例
shakeは指定した値で反復するように点を定めている
code:sample.tikz(tex)
\usetikzlibrary{animations}
\begin{document}
\tikz \draw :xshift = {0s = "0cm", 1s = "-15mm", repeats} (0,0) circleradius=5mm; \begin{tikzpicture}[
animate/shake/.style = {myself:xshift = {
repeats,
0s = "0mm", 50ms = "#1", 150ms = "-#1", 250ms = "#1", 300ms = "0mm"
}}
]
\end{scope}
\end{tikzpicture}
\begin{tikzpicture}[
shake/.style={animate={myself:xshift = {
repeats,
0s = "0mm", 50ms = "#1", 150ms = "-#1", 250ms = "#1", 300ms = "0mm"
}}}
]
\end{scope}
\end{tikzpicture}
\end{document}
https://scrapbox.io/files/66023c97bd29550023c32457.svg
code:jump.tikz(tex)
\usetikzlibrary{animations}
\begin{document}
0s = "red", %なぜかこれを入れないと点滅しない。色はなんでもいい
1s = {jump, "red"},
2s = {jump, "green"},
3s = {jump, "blue"},
repeats
\end{document}
repeats:繰り返し
begin on=click:クリックで開始
animate/<style name>/.style={myself:<animation attribute>={<options>}}でanimation styleを定義すると、animate = {<style name>}で使えるようになる
<style name>/.style={animate={myself:<animation attribute>={<options>}}}で定義
<style name>で使用
となる
使用可能な<animation attribute>のリスト
3D animation
断念
rotate around zは<animation attribute>非対応
code:3d.tikz(tex)
\usepackage{tikz-3dplot}
\usetikzlibrary{animations}
\tdplotsetmaincoords{0}{0}
\definecolor{ocre}{RGB}{243,102,25}
\colorlet{mild}{ocre!50}
\begin{document}
\tikzset{
rotation/.style={animate={myself:rotate around z = {
repeats,
0s="0", 1s="180", 2s="360"
}}}
}
\draw (1,0) arc (0:180:1);
\drawdashed (-1,0) arc (180:360:1); \draw (0,0,2) circle (1);
\draw (-1,0,0) -- (-1,0,2);
\draw (1,0,0) -- (1,0,2);
\end{tikzpicture}
\end{document}
nodeの連動は不可
code:sin.tikz(tex)
\usetikzlibrary{animations}
\begin{document}
\begin{tikzpicture}[
animate/orbit/.style 2 args = {
myself:shift = {
along = {
repeats }} ]
\draw (A) -- ++(4,0);
\end{tikzpicture}
\end{document}
References
\usepackage{animate}と\usetikzlibrary{animations}との違いが説明されている
関連する質問へのリンクもある