最近上傳熱學,上來第一道作業就是球座標系下導熱微分方程的推導,我想著既然推導嘛,總得從畫個好看的圖開始?就在網上找了一下球座標系**積微元的圖,怎麼說呢,大多數都不怎麼清晰,而且考慮到可能還要在圖中做標註,網上的圖果然不是很滿意。
那就自己用咱們萬能的繪圖工具tikz繪製乙個?想法是可以的,但是3d的我之前完全沒有畫過啊,不管他,先去texample找找。3d的例子是挺多的,但是乙個容易懂的**才是最好的。
這個包的繪圖思路包括主要是兩種,一種是在主座標系(tdplot_mian_coords)下的xoy平面繪圖,另一種是在旋轉後的座標系(tdplot_rotated_coords)下的xoy平面內繪圖。旋轉的引數可以用命令\tdplotsetrotatedcoord由尤拉角確定(但要注意的是這裡的尤拉角是'zyz'形式!在計算時要注意)。在座標系coord下以o為圓心,r為半徑畫圓弧的命令是\tdplotdrawarc[coords]。
畫出來的效果如下圖 ,嗯,怎麼說,挺舒服的。
附上畫圖的latex**:
\documentclass
\usepackage
\usepackage
\usepackage
\usepackage[active,tightpage]
\previewenvironment
\setlength\previewborder
\begin
\tdplotsetmaincoords
\pgfmathsetmacro
\pgfmathsetmacro
\pgfmathsetmacro
\pgfmathsetmacro
\pgfmathsetmacro
\pgfmathsetmacro
\begin[scale=5,tdplot_main_coords]
\coordinate (o) at (0,0,0);
\tdplotsetcoord
\tdplotsetcoord
\tdplotsetcoord
\tdplotsetcoord
\tdplotsetcoord
\tdplotsetcoord
\tdplotsetcoord
\tdplotsetcoord
\draw[thick,->] (0,0,0) -- (0.8,0,0) node[anchor=north east];
\draw[thick,->] (0,0,0) -- (0,0.8,0) node[anchor=north west];
\draw[thick,->] (0,0,0) -- (0,0,0.8) node[anchor=south];
\draw[-stealth,color=red] (o) -- (a) node[midway, anchor = south, color=black];
\draw[color=red] (o) -- (b);
\draw[dashed, color=red] (o) -- (c);
\draw[dashed, color=red] (o) -- (d);
\draw[dashed, color=red] (o) -- (axy);
\draw[dashed, color=red] (a) -- (axy);
\draw[dashed, color=red] (o) -- (dxy);
\draw[dashed, color=red] (d) -- (dxy);
\draw(a) -- (e) node[midway, anchor = south, color=black];
\draw(b) -- (f);
\draw[dashed](c) -- (g);
\draw[dashed](d) -- (h);
\tdplotdrawarc
\tdplotdrawarc
\tdplotsetthetaplanecoords
\tdplotdrawarc[tdplot_rotated_coords]
\tdplotdrawarc[tdplot_rotated_coords]
\tdplotdrawarc[tdplot_rotated_coords]{}{}
\tdplotdrawarc[tdplot_rotated_coords]{}{}
\tdplotsetthetaplanecoords
\tdplotdrawarc[dashed, tdplot_rotated_coords]{}{}
\tdplotdrawarc[tdplot_rotated_coords]{}{}
\tdplotsetrotatedcoords
\tdplotdrawarc[dashed, tdplot_rotated_coords]{}{}
\tdplotdrawarc[tdplot_rotated_coords]{}{}
\tdplotsetrotatedcoords
\tdplotdrawarc[dashed, tdplot_rotated_coords]{}{}
\tdplotdrawarc[tdplot_rotated_coords]{}{}
\end
\end
留心的朋友們應該注意到了,我在進行座標旋轉的時候,尤拉角是魔數!!!
其實這是因為它採用的zyz的尤拉角的緣故,這裡如果是zyx的尤拉角我們可以直介面算並用a點方位φ和θ以及d(r, θ, φ+dφ)來表示,但這個zyz型的,寫解析解過於麻煩(這可能也是為什麼我找不到別人貼這個體積微元畫法的**的緣故吧?),這裡我是用matlab根據φ和θ計算得到的,也一併放上來。
function eul = geteul(theta, phi, dp)
az=deg2rad(phi);
el=deg2rad(90-theta);
daz = deg2rad(dp);
aa = [az az + daz];
ee = [el el];
rr = [1 1];
[xx,yy,zz]=sph2cart(aa,ee,rr);
p1 = [xx(1); yy(1); zz(1)];
p2 = [xx(2); yy(2); zz(2)];
e23 = cross(p1, p2);
e23 = e23/norm(e23);
e22 = cross(e23, p1);
e0 = [1 0 0;
0 1 0;
0 0 1];
rotm = [p1 e22 e23]/e0;
eul = rotm2eul(rotm, 'zyz');
eul = rad2deg(eul);
end
本來寫的那版matlab**還附加計算了∠aod(這個在原來latex**裡也是魔數)的,但想起來寫部落格的時候已經找不到了,就只草草寫了乙個算尤拉角的,畢竟現在知道了a(matlab**中p1)、d(matlab**中p2)算夾角也挺簡單。 算符在球座標系 球座標系中的角動量算符
預備知識 角動量 量子 本文使用原子單位制 在量子力學中,我們一般把角動量算符放在球座標中表示 把軌道角動量算符在直角座標系中的定義 式 2 通過鏈式法則用球座標表示 留作習題 begin l x mathrm left sin phi frac cot theta cos phi frac rig...
雙球座標系 天球中兩個經典座標系的換算
漫天繁星的星空總是讓人嚮往,誒誒誒,你可等會兒吧,城市裡哪兒來的滿天繁星啊?害,沒見過沒關係,只要基礎的幾個亮星能看見就行。但是每天地球在動 自轉和公轉 星星還那麼多,那那群天文愛好者或者是天文學家是如何辨認每顆星星的呢 不會搞錯嗎?當然在現如今的世界上,觀星可以靠計算機軟體代替而且就現在來講,還多...
直角座標系下點繞點旋轉的座標計算
直角座標系下一點 x 0,y0 繞某一點 x y 逆時針旋轉角度 後的座標 x 1,y1 的座標計算公式為x1 x0 x c os y 0 y sin x y1 x0 x si n y0 y c os y 這裡舉乙個小例子,藍色箭頭表示原始位置,紅色箭頭表示順時針旋轉2.259弧度後的結果。這裡列出...