ググってみると、たいてい概念と計算式のみの説明だったり、DirectX 等に用意されている関数群を使ったサンプルのみだったりと、その中身について説明しているサイトは僕には見つけられませんでした。
理解している人にとっては当たり前のことなんだと思いますが、知らない人がその計算式だけで中身を理解するのはなかなか難しいと思います。
なので今回はこの行列の中身について解説したいと思います。
前提として、ベクトルの計算程度は理解している必要があります。逆に言えば、ベクトルの計算を理解していれば行列の中身も理解しているも同然と言えます。
まず、単位行列を見てみます。
この行列を、横に1行ずつ見て、それぞれ1行を1本のベクトルとして見てみます。3x3 行列ですから、3本のベクトルがあることになります。これを右手座標系の図で表すと、
こんな感じになります。上から1行目のベクトルが赤、2行目が緑、3行目が青になります。何か、よく見る図ですね。
さて次は Y 軸中心に 30 度回転させる行列を作ってみます。そこらでググれば、Y 軸中心に回転させる行列は、
だということなので、30 度回転させる行列は、
となると思います。ではこれも上と同じように1行ずつベクトルとして解釈して図にしてみます。
こんな感じになります。
…だいたいおわかりになるでしょうか?
つまり、3x3 の回転行列とは3本の垂直な単位ベクトルを並べただけのものなんです。本当にただそれだけのものなので、3D のライブラリなんかに用意されている行列計算関数なんか使わなくても簡単に行列は作れるんです。
例えば Z+ を向いているモデルを任意のベクトルの方向に向かせたければ、行列の3行目にそのベクトルを入れ、同ベクトルを XZ 平面上で 90 度回転させたベクトルを1行目に入れ、最後にこの2つのベクトルの外積を求めて2行目に入れればいいわけです。向かせたいベクトルが Y 軸方向に上下するならもうちょっと工夫が必要ですが、この理屈を理解していれば簡単に作れると思います。
0 件のコメント:
コメントを投稿