<紙>さんLOG

「パソコンヲタクの雑記帳」
 PC/Linux系/物理・化学で遊んでいます。
思いついたことを綴っています。

結晶格子の座標変換

2009年10月02日 | 理科部 部活
ご訪問ありがとうございます。  昨日までの状況は右下の「アクセス状況」にあります。


ウィキペディア「結晶構造」には載っていないけど、
Wikipedia「Lattice constant」には載っている、
結晶格子のベクトル表示図がある。




結晶格子の単位格子(unit cell)は、
良く利用(?)している CIFファイルなどに記述されている。

3軸方向の長さ、a, b, c と、
各軸間のなす角度、alpha, beta, gamma で表されている。

そこで、結晶の各軸を表す単位ベクトルを、
3次元(xyz)空間のベクトルとして表したい!

条件として、
ベクトルc をz軸に重ね、
ベクトルb をyz平面(x座標の値がゼロ)とする。
これで、
ベクトル a, b, c は { x, y, z } で表されるはず。

で、どうすればいいの。

(1)ベクトルc
条件から、
x座標値はゼロ、y座標値はゼロで、z座標値はcですね。
従って、ベクトルc のxyz座標は、{ 0, 0, c } となりますネ。

(2)ベクトルb
条件から、
x標値はゼロですね。
次に、ベクトルb の先端からz軸に垂線(垂直な線)を引いて出来る
直角三角形を考えると、z軸からのなす角度が alpha だから、
z座標値は b*Cos[alpha]で、y座標値は b*Sin[alpha]となりますね。
従って、ベクトルb のxyz座標は、{ 0, b*Sin[alpha], b*Cos[alpha] } だナ。

(3)ベクトルa
ベクトルa の先端からz軸に垂線を引いて出来る
直角三角形を考えると、z軸からのなす角度が beta だから、
z座標値は a*Cos[beta]ですね。

問題は、x座標、y座標の値です。
なかなかの難問ですが、・・・

こういうときは、方程式を作って解いてみる?

2つのベクトルの内積は云々カンヌンで、・・・

ベクトルa のx座標、y座標、z座標を、それぞれ、ab、ay、az とすると、

ベクトルa とベクトルb のなす角度がgamma なので,

ベクトルa 即ち{ ax, ay, az }と、
ベクトルb 即ち{ 0, b*Sin[alpha], b*Cos[alpha] }の内積が、
a*b*Cos[gamma]となるわけだ。

そして、ベクトルa の長さがa だから、
ax^2 + ay^2 + az^2 = a^2 となるナ。

さらに、az=a*Cos[beta]だったから、

結局、ax、ay に関する2元の連立方程式が出来る!

でも、こんな、三角関数を含んだ方程式はどうして解けば良いの???

そんなの「Mathematica」を使えばアッと云う間だヨ???

そう?
じゃ解いてみるね。


(簡単化して、a, b を省略(1と)した)


つまり、
ay = a*( Cos[gamma] - Cos[alpha] * Cos[beta] ) / Sin[alpha]
ax^2 = a^2*Sin[beta]^2 - ay^2

ですか?

そのようですネ。

と云うことで、

3軸方向の長さ、a, b, c と、
各軸間のなす角度、alpha, beta, gamma を与えて、
ベクトルa、ベクトルb、ベクトルc のそれぞれのxyz座標を求める、
Perlプログラムを作りました。
(Active Basicで無いのは、UNIX でも使えるようにです。)
(なお、「^」はべき乗を表す。Perl では「**」ですね。)


と云うことで、今日の 部活動 は終了です。
今日は、「化学」じゃなくて「物理」か「数学」だったかナ?     



見ていただきありがとうございました。
お帰りに投票して頂けると嬉しいです。 ⇒ 日記@BlogRanking

人気BlogRanking ⇒ 

P-NETBANKING ⇒ 

最新の画像もっと見る

2 コメント

コメント日が  古い順  |   新しい順
Unknown (狼皮のスイーツマン)
2009-10-06 22:51:28
グッテの調子が悪いため、こちらからの応援にて失礼いたします。
返信する
狼皮のスイーツマン さんへ (<紙>)
2009-10-07 08:27:45
そうですか?
ちょっとサーバの調子が悪そうで、処理が遅延している様に見えます。
そのせいなのか、本日メンテナンスがあるようですね。
  【システムメンテナンス実施時間】
   ・2009/10/7(水)10:00~ 12:00
とのことですネ。

今後とも、宜しくお願い致します。
返信する

コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。