2次元ベクトルを三角関数で回転させることから回転行列を考えてみる

ベクトルがX軸からΦ回転た位置にあり、そこからθ回転してP´に移動したとする。
vec2RotMat1.gif


Px = ∥P∥ cos( Φ )
Py = ∥P∥ sin( Φ )

Px´= ∥P∥ cos( Φ+θ )
Py´= ∥P∥ sin( Φ+θ )

ここで以下の公式を使って

cos( Φ+θ ) = cos(Φ)cos(θ) - sin(Φ)sin(θ)
sin( Φ+θ ) = sin(Φ)cos(θ) + cos(Φ)sin(θ)

変換する。

Px´= ∥P∥ cos( Φ+θ )

    = ∥P∥ ( cos(Φ)cos(θ) - sin(Φ)sin(θ) )

    = ∥P∥ cos(Φ)cos(θ) - ∥P∥ sin(Φ)sin(θ)

    = Pxcos(θ) - Py sin(θ)


Py´= ∥P∥ sin( Φ+θ )

    = ∥P∥ ( cos(Φ)sin(θ) + sin(Φ)cos(θ) )

    = ∥P∥ cos(Φ)sin(θ) + ∥P∥ sin(Φ)cos(θ)

    = Pxsin(θ) + Py cos(θ)


整理すると

Px´ = Pxcos(θ) - Py sin(θ)
Py´= Pxsin(θ) + Py cos(θ)

行列表現にする
vec2RotMat.gif

スポンサーサイト

comment

Secret

角度を使って移動後の点の座標を求める
式ですね。
2Dゲームで円運動に使えそうですけど、
行列が出ている時点で3Dゲームに
活用できそう。(Z座標は考えないで)

2Dゲームのキャラクタの動きを行列などをつかってやると、行列の使いかたを覚えていいのではと思います。
慣れてきたら次に3Dへ移行するのに楽だと思います。
 自分もはじめ行列がまったく分からないときは一体これは何なんだろう?と思ったことを思い出します。
 しばらく、使っているうちにこれはすごく便利なものだと知り、驚きと面白さを感じました。
 
3Dゲームをつくりには絶対必要だと思います。

あと「回転」というものにもちょっと、.不思議な興味があります。中々伝えるのが難しいですが・・・
 ゲームや3D、CGなどをやってると数学とどうしても関係してしまうので関係する本などをよんだりすると回転というものがもっと客観的にわかってきてとても興味深いです。

「回転」とは何なのか?という普通、考えなくてもいいようなことなんですが・・

回転とは、図形を変換する時に

・ノルム(長さ)が変化しない
・内積(角度)が変化しない
・外積の結果が変化しない(?)
・行列式が1のもの

などと具体的に特徴がわかってなるほど
言われてみれば物を手に持って回転させてみたときに
そうなっているなということが明確に理解できて面白いです。
 物を手にもって回転したとき、ある部分の長さは変化しないですよね。大きさが変化するなんてことはないです。
 ある角の大きさが変化することもないです。
当たり前のことですが数値で、それらがきちんとでるところなどが数学の面白いところに感じます。

回転関連するに近いもので面白いのが「鏡映(?)」だったかな?

図形を鏡映変換すると

・ノルム(長さ)が変化しない
・内積(角度)が変化しない
・外積の結果が変化しない(?)

以上は回転と同じ結果なんですが

・行列式がー1のもの

は「鏡」に映した図形らしいです。

確かに、鏡に映した図形も大きさや形は変化しないんですが画像が反転?しています。
 すると、計算で行列式というものが-1という結果をだすんですって!!
 うーん、ナンカ面白いです。




  
プロフィール

syarekoube

Author:syarekoube
しゃれこうべとあずいの2人によるブログです。
主にアクションゲーム制作について発表しています。
あと、数学の研究です。

カテゴリー
最近の記事
最近のコメント
最近のトラックバック
月別アーカイブ
ブロとも申請フォーム

この人とブロともになる

ブログ内検索
RSSフィード
リンク