「がんばれない」けど「がんばりたい」

ITエンジニアの仕事のこと。AI、機械学習、ディープラーニング。地頭力。車のこと。

OPENFRAMEWORKS.CC TUTORIAL|Vector Mathsを読む

http://openframeworks.cc/tutorials/maths/001_vector_maths.html

ベクトルについては、いろんな情報やネット上にも多数のページがあるが、openFrameworks.ccにあるチュートリアルを読んで、すぐ忘れがちなところを箇条書き程度にまとめてみる。

…と思って読み始めたのですが、元もと.jpサイトの日本語訳って2年くらい前に自分がやったところでした。。翻訳している本人も覚えていないというのはダメっすね。

http://openframeworks.jp/tutorials/maths/001_vector_maths.html

気を取り直して…

■ベクトルの方向

  • 単体ベクトルには、位置・方向・大きさの観点で使う事ができる。では単体ベクトルではなくてA,Bと2つのベクトルが存在するときAからBへの方向(direction)を求めるという事はどういう事になるのか? この場合A,Bベクトルを位置として捉え、A地点からB地点に移動するという事と同義。ではAからBに移動する時、どのような計算になるのか? 875_03

という事。

■dot product / projection / reflection

内積(dot product)

 ※ググって日本語のページを見た方がわかりやすかった。

  • 計算式
    • |a||b|cos(θ)
      ※θ|ベクトルaとbの成す角

it enables us to find the angle between any two vectors in any dimension (2d, 3d,…10d?); since dot(a,b) = |a||b|cos(theta), theta, the angle between the vectors, is equal to acos(dot(a,b)/|a|*|b|) (a motivation for learning normalizing, as it quite simplifies this calculation…if a and b are unit vectors, this is just acos(dot(a,b)) ).

  • 使いどこ 2つのベクトルの成す角度が分かる。

    dot(a, b) = |a||b|con(θ)より、θ = acos( dot(a, b)/|a|*|b| )
    ※もしa, bベクトルがnormalizeされているとすると、θ = acos( dot(a, b) );とシンプルになる。そしてa, bの長さがnormalizeされているとすると、dot(a, b) = cos(θ)となって、cos(θ)のみになる。

 2つのベクトルが、どのくらい同じ向きを向いているかを表す量であるが分かる。  http://d.hatena.ne.jp/Zellij/20130216/p1

 0が-90度〜90度の範囲ではcos(θ)は正であるので、内積の結果が「任意のしきい値より大きく1より小さい」場合は、だいたい同じ方向を向いていると判断出来る。逆に、内積マイナスならば2つのベクトルは違う方向を向いていると言える。特に-1だった場合は完全に2つのベクトルは逆方向という事が言える。例としては、この性質を使ってlightの効果計算に使用されていたりします。