トップ 差分 一覧 ソース 検索 ヘルプ PDF RSS ログイン

直交基底_3DCG

直交基底

3つのベクトルを「X = (1, 0, 0)」「Y = (0, 1, 0)」「Z = (0, 0, 1)」とした場合、これは一般的な以下のような座標を取ります。なお、3ベクトルともに単位ベクトルに正規化されているとします。

これはX、Y、Zが互いに90度で交わっているのが分かるかと思います。このように3ベクトルが互いに垂直に交わるとき、これを「直交基底(正規直交基底)」というように呼びます。

実は、ワールド座標を表す座標系は上のように「X = (1, 0, 0)」「Y = (0, 1, 0)」「Z = (0, 0, 1)」が定義されたときに直交基底となり、これ自身が(文字通り)「基底」となる座標系となっているのが分かります。

この空間上の点P(Px, Py, Pz)を、この直交基底で示される座標系に変換したときの結果の位置(X, Y, Z)は以下の行列式で表されます。

行列の縦を見て、それぞれにX,Y,Zを当てはめるとそれが直交基底に変換する行列になります。なお、上記では単位行列になっているのが分かります。

それでは、任意の直交ベクトルを t = (Tx, Ty, Tz)、u = (Ux, Uy, Uz)、v = (Vx, Vy, Vz)とします。それぞれが単位ベクトルに正規化されており直交しているとします。

このときの点P(Px, Py, Pz)を直交基底を構成するt-u-vで作られる座標系に変換するには以下の行列式が成り立ちます。

直交基底の逆行列

では、点P(Px, Py, Pz)を直交基底の行列で点P'(Px', Py', Pz')に変換できるとして

という式が成り立つとき、逆にP'からPを求めるにはどうするでしょうか。この場合は行列の逆行列を求めることになると思います。行列をAとすると、

P' = A * P

のとき、

P = A^(-1) * P'

のA^(-1)を求めるわけです。

しかし、正規直交基底(=3ベクトルが単位ベクトルで、かつ互いに垂直に交わっているとき)の場合は、この逆行列が縦の並びを横に置換するだけで求まります。

このように、直交基底の場合に逆行列を求めて変換処理を行うときは楽チンですね。この「直交基底」あまり使わないように見えて細かいところで使ったりしますので、こんな規則性のあるものと覚えておくといいかもしれません。

Future's Laboratory 技術格納庫 2004-2013 Yutaka Yoshisaka.