from ins to xyz

罠にはまってしまったのか。以下は愚痴。

並行六面体をつくる三つのベクトル {\bf a}, {\bf b}, {\bf c} を基底とする空間の座標をデカルト座標に変換する行列を考えてたんだけど、どうにもすっきりしない。

\left( \begin{array}{l} {\bf a} \\ {\bf b} \\ {\bf c} \end{array} \right) \left( \begin{array}{lll} {\bf a} & {\bf b} & {\bf c} \end{array} \right)

みたいなテンソルからどうにかならんかと思ってたんだが、幾何的に考えたほうが無難なようだ。

OpenBabel のソースだと、
\left (\begin{array}{ccc} a & 0 & 0 \\ b \cos\gamma & b \sin\gamma & 0 \\ c \cos\beta & \frac{c (\cos\alpha - \cos\beta \cos\gamma)}{\sin\gamma} & c (1 - \cos^2\alpha - \cos^2\beta - \cos^2\gamma + 2 \cos\alpha \cos\beta \cos\gamma) \end{array}\right)
ってなってた。なんでこうなるのかまだ判ってないので、正直使うのがちょっと恐い。特に z軸関係が。