三角関数 4 (三角関数の応用問題)

三角関数の応用問題 1

エンジンのピストンが translateY の 2.0 から -2.0 の間隔を、 60 frame の周期で往復運動をする場合のアニメーションを、 三角関数を使って表してみましょう。

0 frame 目の図 (translateY = 2.0)
[0 frame 目の図]
30 frame 目の図 (translateY = -2.0)
[30 frame 目の図]
60 frame 目の図 (translateY = 2.0)
[60 frame 目の図]

このアニメーションをグラフにすると以下のようになります。

[translateY のグラフ]

このグラフを三角関数で表したいときには、 まず、形の似ている三角関数のグラフをさがします。 この場合には cos(X) のグラフの形が同じであることに気がつきます。

[cos のグラフ]

2 つのグラフを 1 つにして比べてみましょう。 (cos のグラフ目的のグラフです)

[cos と 目的のグラフ]

上の 2 つのグラフの違いは縦軸と横軸の範囲です。 アニメーションのグラフは frame (横軸)は 0 から 60 まで、 translateY (横軸)は -2.0 から 2.0、 cos のグラフは 横軸が 0 から 360、 縦軸が -1.0 から 1.0 になっています。

これから 2 つの図の縦軸と横軸の範囲を合わせてゆきます。
まず、縦軸を合わせるために cos の図を縦に 2 倍のスケールをかけます。
縦軸の最大値と最小値に注意してください。

2 * cos(X) の図
[2*cos(X) のグラフ]

次に横軸を合わせるために、角度を 6 倍します。 (360/60 = 6)
すると、cos の周期が 1/6 になります。

2 * cos(6 * X) の図
[2*cos(6*X) のグラフ]

これで 2 つのグラフが同じになったので、 2 * cos(6 * X) が求める式になります。

Maya 上でのアニメーション

実際に上記の式で望んだアニメーションが実行できるかどうか、 Maya 上で確かめてみましょう。

  1. Polygon または NURBS の Cylinder を作ります。
  2. Expression Editor を開きます。
    (Channel Box からの場合)
    1. TranslateY を選択
    2. マウス右ボタンでポップアップメニューを開き、 Expressions... を選びます。
    (Attribute Editor からの場合)
    1. トランスフォームノード(pCylinder1 または nurbsCylinder1 など)の Attribute Editor を表示しておきます。
    2. Transform Attribute → Translate の Y フィールド上で マウス右ボタンによりポップアップメニューを開き、 Create New Expression... を選びます。
  3. Expression Editor の Expression: に以下の式を書き込みます。
    ty = 2 * cosd(6 * frame);
    [Expression エディタ]
  4. Expression Editor の Create ボタンを押します。
    すると、エラーが無ければ以下のように translateY のフィールドの色が変化します。
    [translateY のフィールド]
  5. プレイバックすると、 translateY が 60 フレームの周期で 2.0 と -2.0 の間を変化するアニメーションが再生されます。
    アニメーション

Maya 上での三角関数

上の Expression の式において、 cos ではなく cosd という関数が使われています。
これはなぜかというと Maya の cos 関数では引数の単位が、 円の 1 周を 2 * 円周率(π = 3.14...)で表すラジアンになっているので、 その代わりに今までの説明で使ってきた 弧度法(円の 1 周 360 度)を単位とする関数である cosd を使っているのです。

もし、上の Expression を cos 関数で表したければ、 弧度法をラジアンに変換する関数 deg_to_rad を使います。
具体的には以下のような式を Expression: に打ち込みます。

ty = 2 * cos(6 * deg_to_rad(frame));

sin 関数の場合も、同じ理由で sind を使用します。

参考


Prev | Next
Home | Contents
Mail