Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

fanimator

ストップモーション アニメーション オブジェクトの作成

説明

fanimator(f) は関数 f からストップモーション アニメーション オブジェクトを作成します。関数 f は 1 つの変数のみに依存するグラフィックス オブジェクトを返さなければなりません。この変数はアニメーションの時間パラメーターを定義します。

既定では、fanimator は、t0 の 0 から 10 までの範囲で t0 の単位時間あたり 10 フレームを生成して f(t0) のストップモーション フレームを作成します。

fanimator(f,args) によって、関数 f を複数の変数に依存するようにできます。argsf の入力引数を指定します。

既定では、変数 t = sym('t') はアニメーションの時間パラメーターです。この構文は、t0 の 0 から 10 までの範囲で f(subs(args,t,t0)) のストップモーション フレームを作成します。グラフィックス オブジェクトの特定のプロパティを、その値を入力引数 argst に依存するよう設定することによってアニメーション化できます。

fanimator(___,Name,Value) は、1 つ以上の Name,Value 引数ペアを使用して、アニメーション プロパティを指定します。このオプションは、前述の構文のすべての入力引数の組み合わせで使用できます。名前と値のペアの設定が、作成されるアニメーション オブジェクトに適用されます。

fanimator(ax,___) は、現在の軸 (gca) ではなく、ax で指定される軸でストップモーション アニメーション オブジェクトを作成します。ax オプションは、上記の構文における入力引数の組み合わせより前に指定できます。

fp = fanimator(___) は、Animator オブジェクトを返します。fp を使用して、特定のアニメーション オブジェクトのプロパティのクエリと変更を行います。プロパティの一覧については、Animator のプロパティを参照してください。

すべて折りたたむ

直線に沿って移動する点と円をアニメーション化します。

まず、関数を作成して (t,1) で点をプロットします。変数 t はアニメーションの時間パラメーターを定義します。

f = @(t) plot(t,1,'r*');

f で定義されるストップモーション アニメーション オブジェクトを作成します。

fanimator(f)

次に、fplotを使用して関数ハンドルを作成し、単位円をプロットします。この円は 2 つの変数の関数です。

2 つのシンボリック変数 tx を作成します。t を使用して円の中心を (t,1) に設定し、x を使用して [-pi pi] の範囲内で円の周囲長をパラメーター化します。円のアニメーション オブジェクトを既存のプロットに追加します。x 軸と y 軸が同じ長さになるように設定します。

syms t x
hold on
fanimator(@fplot,cos(x)+t,sin(x)+1,[-pi pi])
axis equal
hold off

コマンドplayAnimationを入力してアニメーションを再生します。既定では、fanimator は、t の 0 から 10 までの範囲で、単位時間あたり 10 フレームを生成してアニメーション オブジェクトを作成します。

垂直方向の長さとラインの幅が変化するラインをアニメーション化します。特定のグラフィックスのプロパティを、値をアニメーションの時間パラメーターに依存するよう設定することで、アニメーション化できます。既定では、変数 t はアニメーションの時間パラメーターです。

2 つのシンボリック変数 yt を作成します。fplotを使用して、y 座標 [0 t] の間隔でラインをプロットします。関数 fanimator を使用してライン アニメーション オブジェクトを作成します。t の値を 0 から 10 まで増やすことで、fanimator はラインの垂直方向の長さを変化させます。

syms y t
fanimator(@fplot,1,y,[0 t])

コマンドplayAnimationを入力してアニメーションを再生します。

次に、fplot を使用して、y 座標 [0 2] の間隔でラインをプロットします。'LineWidth' プロパティの値を t+1 に設定します。関数 fanimator を使用してライン アニメーション オブジェクトを作成します。t の値を 0 から 10 まで増やすことで、fanimator はラインの幅を変化させます。

fanimator(@fplot,1,y,[0 2],'LineWidth',t+1)

コマンド playAnimation を入力してアニメーションを再生します。

タイマー付きの円をアニメーション化します。

まず、単位円をプロットする関数を作成し、circ.m という名前を付けたファイルに保存します。関数は fplot を使用して、(t,1) を中心とする単位円をプロットし、ローカルなシンボリック変数 x を使用して円の周囲長をパラメーター化します。

function C = circ(t)
    x = sym('x');
    C = fplot(cos(x)+t,sin(x)+1,[0 2*pi],'Color','red');
end

fanimator を使用して単位円のアニメーション オブジェクトを作成します。時間パラメーターのアニメーション範囲を [2 4.5] に、単位時間あたりのフレーム レートを 4 に設定します。x 軸と y 軸が同じ長さになるように設定します。

fanimator(@circ,'AnimationRange',[2 4.5],'FrameRate',4)
axis equal

次に、タイマー アニメーション オブジェクトを追加します。関数textを使用して、経過時間をカウントするテキストを作成します。num2strを使用して時間パラメーターを文字列に変換します。タイマーのアニメーション範囲を [0 4.5] に設定します。

hold on
fanimator(@(t) text(4.5,2.5,"Timer: "+num2str(t,2)),'AnimationRange',[0 4.5])
hold off

コマンドplayAnimationを入力してアニメーションを再生します。タイマーは経過時間を 0 から 4.5 秒までカウントします。移動する円は 2 秒で開始し、4.5 秒で停止します。

2 つのサイクロイドを個別の座標軸でアニメーション化します。サイクロイドとは、円が直線上を滑ることなく移動するときに円周上のある固定点が描く軌跡の曲線です。

まず、シンボリック変数 x および t を作成します。2 つのサブプロットを持つ図を作成し、最初の軸オブジェクトを ax1 として返します。ax1 で移動する円のアニメーション オブジェクトを作成し、円周の縁に固定点を追加します。x 軸と y 軸が同じ長さになるように設定します。

syms x t
ax1 = subplot(2,1,1);
fanimator(ax1, @fplot, cos(x)+t, sin(x)+1, [-pi pi])
axis equal
hold on
fanimator(ax1, @(t) plot(t-sin(t), 1-cos(t), 'r*'))

サイクロイドをトレースするには、プロット区間で時間変数を使用します。関数fplot[0 t] の区間内で曲線をプロットします。サイクロイド アニメーション オブジェクトを作成します。既定では、fanimator は、t の 0 から 10 秒までの範囲でストップモーション フレームを作成します。fanimator は最初のフレームを t が 0 に等しいところでプロットします。

fanimator(ax1, @fplot, x-sin(x), 1-cos(x), [0 t], 'k')
hold off

次に、2 番目の軸オブジェクト ax2 上で別のサイクロイドを作成します。円の中心から 1/2 の距離にある固定点によって作成される曲線をトレースします。x 軸と y 軸が同じ長さになるように設定します。

ax2 = subplot(2,1,2);
fanimator(ax2, @fplot, cos(x)+t, sin(x)+1, [-pi pi])
axis equal
hold on
fanimator(ax2, @(t) plot(t-sin(t)/2, 1-cos(t)/2, 'r*'))
fanimator(ax2, @fplot, x-sin(x)/2, 1-cos(x)/2, [0 t], 'k')
hold off

コマンドplayAnimationを入力してアニメーションを再生します。

UI Figure を作成します。Figure の UI 軸を指定します。

fig = uifigure;
ax = uiaxes(fig);

Figure contains an axes object. The axes object is empty.

アニメーション オブジェクトを、fanimator を使用して UI 軸に追加します。2 つのシンボリック変数 xt を作成します。[0 3] の区間内で時間 t の関数として指数的に大きくなる曲線をプロットします。

syms x t;
fanimator(ax,@fplot,exp(x),[0 t],'r','AnimationRange',[0 3])

Figure contains an axes object. The axes object contains an object of type functionline.

コマンド playAnimation(fig) を入力して UI Figure fig でアニメーションを再生します。代わりに、コマンド playAnimation(ax.Parent) を使用することもできます。

Copyright 2018 The MathWorks, Inc.

入力引数

すべて折りたたむ

グラフィックス オブジェクトを返す関数。関数ハンドルとして指定します。関数ハンドルの詳細については、関数ハンドルの作成を参照してください。

その他の引数。グラフィックス オブジェクトを返す関数ハンドルの入力引数として指定します。

ターゲットの座標軸。Axes オブジェクトとして指定します。Axes オブジェクトの詳細については、axesを参照してください。

名前と値の引数

オプションの引数のペアを Name1=Value1,...,NameN=ValueN として指定します。ここで、Name は引数名、Value は対応する値です。名前と値の引数は他の引数の後になければなりませんが、ペアの順序は関係ありません。

R2021a より前では、コンマを使用して名前と値の各ペアを区切り、Name を引用符で囲みます。

例: 'AnimationRange',[2 8],'FrameRate',30

アニメーションの時間パラメーター。シンボリック変数として指定します。

例: sym('y')

アニメーションの時間パラメーターの範囲。2 要素の行ベクトルとして指定します。2 要素は増加する実数値でなければなりません。

例: [-2 4.5]

フレーム レート。正の値で指定します。フレーム レートはアニメーション オブジェクトの単位時間あたりのフレーム数を定義します。

例: 30

出力引数

すべて折りたたむ

アニメーション オブジェクト。スカラー値として返されます。このオブジェクトを使用して、生成されたアニメーション フレームのプロパティのクエリと変更を行います。プロパティの一覧については、Animator のプロパティを参照してください。

ヒント

  • fplotのようなプロット関数を使用してグラフを作成する場合、MATLAB® は一連のグラフィックス オブジェクトを作成します。その後、関数 fanimator および関数 playAnimation を使用して、グラフィックス オブジェクトの特定のプロパティをアニメーション化できます。関数 title および関数 xlabel などの一部の関数は、アニメーション化できないテキスト オブジェクトを作成することに注意してください。代わりに、関数 text を使用して、アニメーション化できるテキスト オブジェクトを作成します。

バージョン履歴

R2019a で導入