2016-05-17 8 views
0

私は2つの平面の間に二面体を見つけようとしています。私はすべての座標とベクトルを計算しましたが、最後のステップは問題を与えています。最後のステップはベクトル間の角度を見つけることです。ここに私のコードはPythonで単純なnumpyや数式を使って2つのベクトル間の角度を計算しますか?

V1= (x2-x1,y2-y1,z2-z1) 
V2= (x3-x2,y3-y2,z3-z2) 
V3= (x4-x3,y4-y3,z4-z3) 

V4= numpy.cross(V1,V2) 
V5= numpy.cross(V2,V3) 

dihedral=math.acos(V4.V5) 
print dihedral 

私はこれが正しいか教えてください? 私は3つのベクトルV1、V2、V3を作った4つの点の座標を知っています。そして、2つのベクトルを得るために積を作りました。

+2

[Pythonで2つのn次元ベクトルの間の角度]の可能な複製(http://stackoverflow.com/questions/2827393/angles-between-two-n-dimensional-vectors-in-python) – Natecat

+0

4点は? – Eric

+0

既知の値でテストしましたか?動作する(または動作しない)番号の例を表示します。 – hpaulj

答えて

2

ベクトルの交差積を使用して角度を計算すると、ベクトルの単位長さがある場合にのみ作用します。最初に正規化する必要があります。

V4 = V4/np.sqrt(np.dot(V4,V4)) 

はさらに、私はあなたがmath.acos(V4.V5)ためmath.acos(np.dot(V4,V5))を書くためのものだと思います。

関連する問題