keywords: Stereographic Projection, python, 物理冶金, 晶體缺陷
利用python的matplotlib
及tkinter
模組畫出stereographic projection
▲ 圖一、(100) stereographic projection。
先用3個 for loop 將所有符合條件的向量暴力解出來,再用matplotlib模組將算出的向量呈現出來。
實際上的操作,我是將向量先放置在半徑為 1 圓心在圓點的球體表面,接著將投影點設為 (-1,0,0),將投影點與球體上的向量連線,最終投影至 x = 1 平面上,繪製結果如圖六。
▲ (100) 投影圖繪製結果
▲ (110) 投影圖繪製結果
先將向量伸縮至球體表面,使用矩陣:
[[ 2/3, -1/3, -1/3], [-1/3, 2/3, -1/3], [-1/3, -1/3, 2/3]]
將向量投影至[111]面上,最終將Axes3D
的屬性 view_init 設定為 view_init(elev=45,azim=45)
,即x軸沿z軸順時針旋轉45°;固定原點將z軸往出紙面方向旋轉45°,繪製結果如圖。
▲ (100) 投影圖繪製結果
雖然和stereographic projection投影圖有差距,但利用球體投影,旋轉的座標軸移動清晰可見。為了方便使用者操作,引入 tkinter 模組,可以呈現與使用者互動的3d圖,座標圖上的文字方便使用者找到現在的位置。
▲ (100) 投影圖於球體
▲ (110) 投影圖於球體
▲ (111) 投影圖於球體
- install package
tkinter
- Download all the files and put them in the same folder
- See Projections open
Projection1xx.ipynb
and run the code inside - See Sphere Projections open
Project_sphere_tkinter.py