|
setup diary |
原子軌道の角度部分の立体的な絵を、ソフトを使って書いてみた。webを調べるとpovrayを使って書いている人が多かったが、特殊関数などの定義が面倒だし、Rのrglを使って書いた方が良い気がして、その方針でやってみた。ソースは以下のとおりです。
library(misc3d) library(gsl) theta<-function(x,y,z)acos(z/sqrt(x^2+y^2+z^2)) phi<-function(x,y,z)atan( (sqrt(x^2+y^2)-x)/y )*2 th<- 0:100/100*pi ph<- 0:200/200*2*pi fc <- function(x,y,z)ifelse(fr(theta(x,y,z),phi(x,y,z))<0,'blue','red') fx <- function(t,p)abs(fr(t,p))*sin(t)*cos(p) fy <- function(t,p)abs(fr(t,p))*sin(t)*sin(p) fz <- function(t,p)abs(fr(t,p))*cos(t) for(l in 0:5){ for(m in 0:l){ fr <- function(t,p)legendre_Plm(l,m,cos(t))*cos(m*p) parametric3d(fx, fy, fz, th, ph,color=fc) play3d(spin3d(c(0, 0, 1), 10),5) }}
ライブラリとしては、特殊関数を使うためにrglを使って、プロットにはmisc3dのparametric3dを使った。極座標のphiは、tan(2phi)から計算するようにして、条件分岐を減らすことができた。とりあえず、h軌道ぐらいまで書いて、五秒間10rpmで回すようにしてみたが、分かりやすくなったかな。