Home > 未分類 > [ MEL ] ベクトルの射影

[ MEL ] ベクトルの射影

  • Posted by: tai
  • 2007/05/29 11:00
  • 未分類

ベクトルa,bがあり、aをbに射影したベクトルをpとする。
a,bからpを求める式は以下のとおり。


vector $a, $b, $p;
$a = << 1, 2, 3 >>;
$b = << 9, 6, 3 >>;
float $len = $b;  // length of $b
float $dot = dot( $a, $b );
float $tmp = $dot/($len*$len);
$p = << $tmp*$b.x, $tmp*$b.y, $tmp*$b.z >>;

以下、簡単な解説。

pの大きさは | a |cosθ となります。
| a |というのは a の大きさのことで、
sqrt( a.x*a.x+a.y*a.y+a.z*a.z );です。
melだと、vector型をfloat型に変換することで簡単に求められます。
また、normalizeというコマンドもあります。
どれを使ってもOK、だと思います。たぶん。

pの方向は b と同じになるので、bを正規化してやる必要があります。
正規化されたベクトルはは b / | b | によって求められます。

これを式にすると

p = | a |cosθ* ( b / | b | );

となり、これを展開すると、

p = dot( a, b ) / |b|^2 * b;

となります。
^2というのは2乗のことです。^3なら3乗です。

WEBで数式を書くのって大変だ。。

メモ代わりにほぼ全部本から丸写しwww
間違ってたらごめんなさーい。

詳しく知りたい方は [ ベクトル 射影 ] などで検索すると多分出てきます。

Comments:0

Comment Form
Remember personal info

Trackbacks:0

Trackback URL for this entry
http://blog.taikomatsu.com/2007/05/29/mel-%e3%83%99%e3%82%af%e3%83%88%e3%83%ab%e3%81%ae%e5%b0%84%e5%bd%b1/trackback/
Listed below are links to weblogs that reference
[ MEL ] ベクトルの射影 from memlog

Home > 未分類 > [ MEL ] ベクトルの射影

Return to page top