アプリ版:「スタンプのみでお礼する」機能のリリースについて

空間内の三斜晶系の格子(軸長a≠b≠c, 軸角α≠β≠γ)内にある2点ABの座標をA(x1, y1, z1)、B(x2, y2, z2)とすると、
2点間の距離は以下の式で求めることができます。

AB^2 = (x1-x2)^2・a^2 + (y1-y2)^2・b^2 + (z1-z2)^2・c^2 + 2(x1-x2)(y1-y2)ab(cosγ) + 2(y1-y2)(z1-z2)bc(cosα) + 2(z1-z2)(x1-x2)ca(cosβ)

例えば、次のような格子の大きさと任意の二点A,Bの座標を設定すると、
格子: a = 10, b = 12, c = 15, alpha = 60°, beta= 70°, gamma= 80°
2点の座標: A(3/10, 4/10, 5/10), B(5/10, 3/10, 4/10)
AB間の距離は、上記の公式から“AB = 2.570”と求まります。

このとき、どのようにして上記の二点間の距離を求める公式が導かれるのでしょうか??
自分で導こうと式を展開していくと、途中で非常に複雑になってしまい、
上のようなシンプルな式の形に到底辿り着けそうな気がしません。
どなたか、上記の公式を導き出せる方、出来るだけ分かりやすく教えて頂けるとありがたいです。

どうぞよろしくお願いします。

A 回答 (2件)

それぞれの軸を単位ベクトルと見なして計算すれば単なる展開です。


つまり、↑a=(1,0,0),↑b=(0,1,0),↑c=(0,0,1)とすると
↑OA=x1↑a + y1↑b + z1↑c
↑OB=x2↑a + y2↑b + z2↑c
↑AB=(x2-x1)↑a + (y2-y1)↑b + (z2-z1)↑c
AB^2=|↑AB|^2={(x2-x1)↑a + (y2-y1)↑b + (z2-z1)↑c}{(x2-x1)↑a + (y2-y1)↑b + (z2-z1)↑c}

ベクトルの内積を使うとそのまま

=(x1-x2)^2・a^2 + (y1-y2)^2・b^2 + (z1-z2)^2・c^2 + 2(x1-x2)(y1-y2)ab(cosγ)
+ 2(y1-y2)(z1-z2)bc(cosα) + 2(z1-z2)(x1-x2)ca(cosβ)

となります。
    • good
    • 0
この回答へのお礼

> つまり、↑a=(1,0,0),↑b=(0,1,0),↑c=(0,0,1)とすると
> ↑OA=x1↑a + y1↑b + z1↑c
> ↑OB=x2↑a + y2↑b + z2↑c

なるほど、↑OAと↑OBから↑ABを作れば良かったわけですね。
そうすると非常にシンプルに公式の形を導き出すことが出来ますね。
大変良く分かりました。ありがとうございました。

お礼日時:2008/01/06 15:29

>「自分で導こうと式を展開していくと、途中で非常に複雑になってしまい、・・・」



どう計算したの?
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!