« Xcode その2 CoreAudio | メイン | 3D »

2007年04月23日

三角関数

突然だけど、三角関数覚え書き(超初心者向け)


sinθとは斜辺の長さを1としたときの高さ。
cosθとは斜辺の長さを1としたときの底辺の長さ。
ラジアン角とは半径を1としたときの円周の長さ。


上記の様に単位を1としたときの値を求めておく理由は
sinθ、cosθは合同な三角形の場合その倍率をかければその長さがが分かるから。
円もほぼ同じ理由。



二次元アフィン変換
ベクトルa(x,y)をθ度だけ回転させたときの座標a'(x',y')
x' = xcosθ - ysinθ;
y' = xsinθ + ycosθ;



ベクトルの内積、外積
ここ参考青空の果て
ここの書き方が一番分かりやすかった


内積
a・b = |a| |b| cosθ
要約するとベクトルAに対してのベクトルBでは
ベクトルBのベクトルAに対しての作用量。
だから|a| と |b| cosθに分けて考えると分かりやすい。

return a.x*b.x+a.y*b.y+a.z*b.z;
(なぜか三次元)


外積
内積を理解してから考えると分かりやすい。
取り合えずベクトルA、Bに垂直なベクトルを求めるものと
理由を考えずに覚える。


外積によって求められたベクトルと元になった 2 つのベクトルそれぞれの内積は 0 になる。
a x b = c
a・b = 0, b・c = 0
これは内積で求められた cos90°の事である。(ここ重要)
ここから法線ベクトルを求められる。
左手系、右手系で座標が変わる。

a.y*b.z - a.z*b.y , a.z*b.x - a.x*b.z , a.x*b.y - a.y*b.x;
返り値はx,y,zのベクトルの座標



これ毎回忘れがちなのでメモ。

投稿者 hiphi : 2007年04月23日 16:33

トラックバック

このエントリーのトラックバックURL:
http://hiphi.net/cgi/mt/mt-tb.cgi/92

コメント

It is one of things I can never understand ... how people can think that way. It's so illogical that it can only be based upon moronity.

投稿者 Mital : 2008年04月07日 02:03

Your previous posts were real rubbish, but this is good. This one is brilliant. Your blog is getting really better.

投稿者 MARGOMAR : 2008年04月09日 19:38