goo blog サービス終了のお知らせ 

まったり アイマス2

アイドルマスター2 超ライトユーザーのプレイ日記

3218. 随伴行列、続き^3

2020年11月03日 | 日記

 (列)ベクトル`(px, py, pz)と`(qx, qy, qz)の外積はやはりベクトル`(rx, ry, rz)となって、行列式の記号で表すと、
  |(`ex, `ey, `ez)(px, py, pz)(qx, qy, qz)|
となります(`exはx軸方向の単位ベクトル。`ey、`ezも同様)。行列式の要素に数値では無いベクトルがあるのは、とあるテンソル解析の本で見たもので、本稿ではこれで行きます。普通の数式で表すと、
  `r = (py*qz - pz*qy)`ex + (pz*qx - px*qz)`ey + (px*qy - py*qx)`ez
となり、成分だけで表すと、
  `r = `(py*qz - pz*qy, pz*qx - px*qz, px*qy - py*qx)
となります。
 この時、ベクトル`rは、`pと`qが作る平面に垂直で、長さは`pと`qが辺の平行四辺形の面積となります。`pと`qが一直線なら`rの大きさは0になってしまい(英語ではvanish、つまり消失すると表現されていてびっくりしたことがある。日本語では零ベクトルとか言って、一応存在することにはなっている感じ)、普通は右ネジというか右手というか、そちらの方向です。
 空間中で回転させても平行四辺形の面積は不変ですから、pz = qz = 0のxy平面に乗っていれば、平行四辺形の面積は、
 px*qy - py*qx
となります(右回りだと正だが、左回りだと負になる。ベクトル`rが反対向きになることを示す)。行列式で表すと、
  |(px py)(qx qy)|
で、このような行列式のとある行と列を除いた(さらに符号を調整した)行列式を余因子と言います。前々回の書き方だと、a33の行と列を除いたことになるので、この余因子は、
  A33
などと表現します。
 元の3次元空間に戻すと、要するに余因子が成分のベクトルが外積のベクトルとなります。

 つまり、計算によってある平面に垂直なベクトルが算出できることを意味します。単位ベクトルが欲しければ、長さの大きさで割ればよろしいです。
 3次元ですから、視点として3方向、前`(1, 0, 0)、左`(0, 1, 0)、上`(0, 0, 1)の3個の互いに垂直な単位ベクトルを用意します。3次元の回転は3種あって、行列で表すと、
  ((0  0  0)(0  cos t -sin t)(0  sin t  cos t))
  ((cos t  0  sin t)(0  0  0)(-sin t  0  cos t))
  ((cos t -sin t  0)(sin t  cos t  0)(0  0  0))
で、それぞれx軸周りの回転、y軸周りの回転、z軸周りの(角度tの)回転です。これで、視点の方を(逆)回転させます。回転後の物体の座標は、それぞれの視点ベクトルと内積を取ると成分が出てきます。

 数学だったら、これでおしまいですが、計算機には計算誤差というのがあって、互いに垂直というのが崩れてゆく恐れがあります。垂直で無くなると、内積を取る方法では物体がゆがんで表示されてしまいます。なので、時々、長さを1に戻して、互いに垂直になるように再調整します(視点のベクトルの調整だけなので大した計算量では無いので、私は1回ずつ単位化、垂直化を実施する予定)。この時に、上述の外積が役立つ、ということ。

 何だか長大な説明になってしまって恐縮です。これを4次元でやりたかったのが今回の話題で、多分、次回で終結します。

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする