dA-tools.com

HOME > AfterFx > expression > 実践 > ベクトル

位置の指定

方向と距離

  • vector1.jpg位置は[x, y]2つの値を使った配列で指定することが出来ますが、他にも基準点からの距離と方向でも決めることが出来ます。図のように原点から点Pに線を引き先端に矢印をつけると座標上にある全てのポイントの位置を表すことが出来ます。このように方向と長さ両方に意味がある矢印をベクトルと呼びます。またそれを表す数字の組み合わせもベクトルと呼びます。
  • 例:P1= [4,3]

ベクトル計算

なぜベクトルを使うのか?

  • 下のようなP1とP2の中間点を求める場合を考えてみます。

Midpoint.jpg

中間点をMid, その座標を[ Mid_X , Mid_Y ]とすると

Mid_X = ( P1[0] + P2[0] )/ 2 ;
Mid_Y = ( P1[1] + P2[1] )/ 2 ;
Mid = [ Mid_X , Mid_Y ] 

となります。
これをベクトル計算でやると

Mid = ( P1 + P2 ) / 2

こんなに簡単になってしまいます。
複数の次元を持つプロパティでは各次元に同じ計算をしなければなりませんが、ベクトル計算を使えば一回で済みます。LinkIconベクトルについて

ベクトルの計算では四則計算などの一般的な演算以外に、内積外積や距離などベクトルに特有の関数も含まれています。

例:2点間の距離を測る

  • 上図のP1を[ 3,4 ] 、P2を[ 9,6 ]、2点の距離をdistとするとdistはピタゴラスの定理(三平方の定理)を使って求められます。

dist=Math.sqrt(Math.pow((9-3),2)+Math.pow((6-4),2))
  =Math.sqrt(40)
  =6.3245......

これをベクトル計算でやると

dist=length([3,4] ,[9,6])

やはり簡単です。解り易いしミスも減ります。

これがベクトル計算のメリットなのです。

なお、ベクトル計算ではインデックスを使用しない限り全ての関数または演算子が各次元に適用されます。次例:

position * 1.5

  • XとY両方の値が1.5倍されます

position[0] * 1.5

  • Xの値だけが1.5倍されます