Skip to content

crlambda/Stereographic-Projection-Python

Repository files navigation

Stereographic-Projection-Python

keywords: Stereographic Projection, python, 物理冶金, 晶體缺陷

簡述

利用python的matplotlibtkinter模組畫出stereographic projection

100

圖一、(100) stereographic projection。

原理

(一)找出落在軸面之向量

先用3個 for loop 將所有符合條件的向量暴力解出來,再用matplotlib模組將算出的向量呈現出來。

繪製 (100) 投影圖

實際上的操作,我是將向量先放置在半徑為 1 圓心在圓點的球體表面,接著將投影點設為 (-1,0,0),將投影點與球體上的向量連線,最終投影至 x = 1 平面上,繪製結果如圖六。

100sp

(100) 投影圖繪製結果


繪製 (110) 投影

110sp

(110) 投影圖繪製結果


繪製 (111) 投影

先將向量伸縮至球體表面,使用矩陣:

[[ 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°,繪製結果如圖。

111sp

(100) 投影圖繪製結果


可旋轉球體投影

雖然和stereographic projection投影圖有差距,但利用球體投影,旋轉的座標軸移動清晰可見。為了方便使用者操作,引入 tkinter 模組,可以呈現與使用者互動的3d圖,座標圖上的文字方便使用者找到現在的位置。


100ball

(100) 投影圖於球體

110ball

(110) 投影圖於球體

111ball

(111) 投影圖於球體

Usage

  1. install package tkinter
  2. Download all the files and put them in the same folder
  3. See Projections open Projection1xx.ipynb and run the code inside
  4. See Sphere Projections open Project_sphere_tkinter.py

About

Stereographic Projection, python, 物理冶金, 晶體缺陷, Physical Metallurgy

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published