実装して学ぶデータ処理システム その2 - 反射が起きる条件
スポット検出の話 が間に入ってしまったが、第 1 回に引き続き、Kabsch, Wolfgang. "Integration, scaling, space-group assignment and post-refinement" Acta Crystallographica Section D (2010): 133-144 の 2.2 節で述べられている反射条件を説明する。
以下では、1つの反射 hkl に着目するので、添字に指数を明示しない。回転前()の結晶方位における逆格子点は、逆格子の基底ベクトルを用いて
と表現できる。これを
周りに
回転させて
に移動し、回折が起きるようにしたい。
このときの様子を、回転軸 に垂直な視線で眺めたのが下の図である。
結晶の回転により、 は点線の軌道を移動して、
において Ewald 球に接触する。これを、回転軸に平行な視線から眺める(上の図で、上空から見下ろす)と、
の軌跡は
平面に平行な平面上の円になる。Ewald 球のこの高さでの断面は、
以下の半径を持つことに注意。
回折が起きるとき、Laue 方程式 が成り立つ。両辺を二乗して、
だから、
である。ここで、
と
を goniostat system の基底を使って展開してやると、
となる。太字になっていない係数は のような成分であって、スカラーである。
は正規直交系をなすので、
と簡単にできる。さらに、 という定義から
と
は直交するから、
である。また、回転は
軸のまわりに起きるので、この軸方向の成分は変化せず、
である。以上より、
となって、これを移項して整理すると、
が得られる。最後の成分 は、回転によって
の長さが変わらないことから、
と求められる。
次に、回転角 を求める。
平面内に射影して考えればよい。
を
に重ねるための角度だから、内積の定義から
が分かる。sin については、(二次元の)外積の性質から
となる。
この sin と cos から回転角 を求めることもできるが、実際の計算では三角関数のまま用いる。その理由は、φ の回折パラメータによる偏微分 - biochem_fan's note に書いた。
今回の計算は R に実装済みであるが、とりあえず理論だけ公開しておく。図を作るのが思ったより面倒で、コードの整理が間に合わなかった。反射が不可能な条件 (blind region) と合わせて、次回とする。