给定空间的四个点的笛卡尔积坐标,使用python、shell计算二面角
簡單介紹
其中A,B,C,D是以列表形式給出的直角坐標 (例如: A = [x, y, z] )
給出4個原子的坐標A、B、C、D(應(yīng)該是笛卡爾坐標,內(nèi)坐標的話也就不需要算了)
注意4個原子的順序(這涉及到二面角的大小,正負,可以參考各種分子可視化軟件的選擇二面角方法)
求三個向量a = B-A, b = C-B, c = D-C(這一步需要注意減法的順序,因為這決定了向量的方向,從而決定了平面法向量的方向)
使用數(shù)學(xué)上向量的方法叉乘,n1=a×b,n2=b×c;(注意順序,決定了法向量的方向,方向錯了二面角會錯)
得出的兩個法向量用余弦定理求角度 θ = arccos(n1·n2)/(|n1|*|n2|)
由于之前我們嚴格定義了各種矢量的方向,所以得出的即四個原子的二面角(寫程序的時候注意弧度與角度之間的轉(zhuǎn)化)
數(shù)學(xué)原理:
叉乘會根據(jù)給定的兩個向量的方向和大小給出法向方向的向量(方向:右手定則)
A,B,C 就對應(yīng)著AB,BC兩個向量,叉乘給出的法向量方向是唯一的,而根據(jù)平面法向量和平面上的向量相互正交的性質(zhì)列方程解方程組得到的法向量是有正負兩個方向的(因為正負兩個方向都滿足正交的條件,算二面角的時候就會出現(xiàn)問題)
同理,B,C,D也會給出一個唯一方向的法向量,兩個法向量之間會有(0,180°)的夾角,算出的cosθ=(n1·n2)/(|n1|*|n2|)也會有正負的分別,但根據(jù)余弦圖像可得,每一個值都對應(yīng)著一個在(0,180°)內(nèi)確定的角度。
參考引用
參考鏈接一
參考鏈接二
參考鏈接三
參考鏈接四
總結(jié)
以上是生活随笔為你收集整理的给定空间的四个点的笛卡尔积坐标,使用python、shell计算二面角的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 鸿蒙系统发布会是什么时候,鸿蒙系统2.0
- 下一篇: Java 自动化测试工具Selenium