<紙>さんLOG

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

結晶格子の座標変換2

2009年10月22日 | 理科部 部活
ご訪問ありがとうございます。


前回の「結晶格子の座標変換」では、

Wikipedia「Lattice constant」に載っている、
(下図)結晶格子のベクトル表示図

に対して、

  結晶の各軸を表す単位ベクトルを、
  3次元(xyz)空間のベクトルとして表したい!
  条件として、
  ベクトルc をz軸に重ね、
  ベクトルb をyz平面(x座標の値がゼロ)とする。

としました。

その後、いろいろ勉強していると、一般的と違っているような気がしました。
すなわち、

ベクトルa をx軸に重ね、
ベクトルb をxy平面(z座標の値がゼロ)とする

ことの方が、一般的(?)のような???

そこで、

条件を変更して、再度、変換式を求めてみました。


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

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

(3)ベクトルc
ベクトル c の座標を { cx, cy, cz } で表す。

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

あと、y座標値、z座標値については、ベクトルb との内積を考える。
ベクトルc とベクトルb のなす角は alpha ということで、

cy = c*( Cos[alpha] - Cos[gamma] * Cos[beta] ) / Sin[gamma]
cz^2 = (c*Sin[beta])^2 - cy^2

ですね。

以上で、前回作ったPerlプログラムの改訂版:
3軸方向の長さ、a, b, c と、
各軸間のなす角度、alpha, beta, gamma を与えて、
ベクトルa、ベクトルb、ベクトルc のそれぞれのxyz座標を求める、
プログラムを作りました。

(以上を検証していて、
 前回記事に2箇所の記述ミスがあることに気付きました。
 御免なさい。青太字で訂正しておきます。)

と云うことで、今日の 部活動 は終了です。
やはり、部の名称変更が必要かも?        



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

人気BlogRanking ⇒ 

P-NETBANKING ⇒