In[]:=
In[]:=
OrbitalDataNames={{"ao's involved","orbitals involved","molecular geometry","examples"}};
In[]:=
OrbitalData={Row[{"2",Style["s",Italic],", 2",Subscript[Style["p",Italic],"z"]}],2,"linear",Row[{,,", ","Be",}]},Row["2",Style["s",Italic],", 2",Style[,Italic],", 2",Style[,Italic]],3,"angular trigonal",Row[{,,", ","B",}],Row["2",Style["s",Italic],", 2",Style[,Italic],", 2",Style[,Italic],", 2",Style[,Italic]],4,"tetrahedral",Row[{"C",,", ","C",}],Row"4",Style["s",Italic],", 4",Style[,Italic],", 4",Style[,Italic],", 3",,", 3",,4,"square planar",Row[{"Xe",,", ","[",,"(",,,"]"}]},Row"4",Style["s",Italic],", 4",Style[,Italic],", 4",Style[,Italic],", 4",Style[,Italic],", 3",,5,"trigonal bipyramidal",Row[{"P",,", ","Sb",}],Row"4",Style["s",Italic],", 4",Style[,Italic],", 4",Style[,Italic],", 4",Style[,Italic],", 3",,", 3",,6,"octahedral",Row[{"S",,", ","Te",}];
"C"
2
"H"
2
"Cl"
2
"p"
"x"
"p"
"y"
"C"
2
"H"
4
"Cl"
3
"p"
"x"
"p"
"y"
"p"
"z"
"H"
4
"Cl"
4
"p"
"x"
"p"
"y"
Style["d",Italic]
2
Style["z",Italic]
Style["d",Italic]
Row," - ",
2
Style["x",Italic]
2
Style["y",Italic]
"F"
4
"PtCl"
2
"NH"
3
")"
2
"p"
"x"
"p"
"y"
"p"
"z"
Style["d",Italic]
2
Style["z",Italic]
"Cl"
5
"F"
5
"p"
"x"
"p"
"y"
"p"
"z"
Style["d",Italic]
2
Style["z",Italic]
Style["d",Italic]
Row," - ",
2
Style["x",Italic]
2
Style["y",Italic]
"F"
6
"F"
6
In[]:=
OrbitalDataTable=Table[{OrbitalDataNames[[j]],OrbitalData[[i]]},{j,1,Length[OrbitalDataNames]},{i,1,Length[OrbitalData]}];
In[]:=
OrbitalModel[n_]:=Block[{pairs,fun,fun1,fun2,fun3,fun4,a,b,i,l,m,y1,y2,y3,θ,ϕ},pairs=Flatten[Table[{i,j},{i,0,5},{j,0,i}],1];fun={};Do[l=pairs[[i,1]];m=pairs[[i,2]];a=SphericalHarmonicY[l,-m,θ,ϕ];b=SphericalHarmonicY[l,m,θ,ϕ];y1=b;y2=ExpToTrig[(a-b)/Sqrt[2]];y3=ExpToTrig[(a+b)/Sqrt[2]/I];If[m0,AppendTo[fun,y1],AppendTo[fun,{y2,y3}]];fun1=Flatten[fun,1],{i,1,Length[pairs]}];fun2=Take[fun1,16];fun3=Table[If[i4||i7||i12||i14||i16,-fun2[[i]],fun2[[i]]],{i,1,16}];fun4=Table[If[i8||i9||i13||i14,fun3[[i]]*I,fun3[[i]]],{i,1,16}];fun4[[n]]]
HybridSP[view_]:=Block[{hybridFuns,scalingVecs,len,pos,i,hybOrbs1r,hybOrbs1b,hybOrbs1rScaled,hybOrbs1bScaled,hybOrbs1rScaledP,hybOrbs1bScaledP,hybOrbs1rOne,hybOrbs1bOne,hybOrbs1rTwo,hybOrbs1bTwo,hybOrbs1rNew,hybOrbs1bNew,sampleSize},sampleSize=500;hybridFuns={1./Sqrt[2](OrbitalModel[1]+OrbitalModel[2]),1./Sqrt[2](OrbitalModel[1]-OrbitalModel[2])};scalingVecs={{0,0,-1},{0,0,1}};len=Length[hybridFuns];pos[x_]:=If[x≥0,x,Null];hybOrbs1r=Table[SphericalPlot3D[Evaluate[{pos[hybridFuns[[i]]]}],{θ,0.0,π},{ϕ,0.0,2.0π},PlotRangeAll,PlotStyleNone,MeshStyleLighter[Red]][[1,1]],{i,1,len}];hybOrbs1b=Table[SphericalPlot3D[Evaluate[{pos[-hybridFuns[[i]]]}],{θ,0.0,π},{ϕ,0.0,2.0π},PlotRangeAll,PlotStyleNone,MeshStyleLighter[Blue]][[1,1]],{i,1,len}];hybOrbs1rOne=ListSurfacePlot3D[RandomSample[hybOrbs1r[[1]],sampleSize],MeshFunctions(#3&),MeshShading{None,Lighter[Red]}];hybOrbs1rTwo=ListSurfacePlot3D[RandomSample[hybOrbs1r[[2]],sampleSize],MeshFunctions(-#3&),MeshShading{None,Lighter[Red]}];hybOrbs1rNew={hybOrbs1rOne,hybOrbs1rTwo};hybOrbs1bOne=ListSurfacePlot3D[RandomSample[hybOrbs1b[[1]],sampleSize],MeshFunctions(-#3&),MeshShading{None,Lighter[Blue]}];hybOrbs1bTwo=ListSurfacePlot3D[RandomSample[hybOrbs1b[[2]],sampleSize],MeshFunctions(#3&),MeshShading{None,Lighter[Blue]}];hybOrbs1bNew={hybOrbs1bOne,hybOrbs1bTwo};hybOrbs1rScaled=Table[Graphics3D[GeometricTransformation[hybOrbs1rNew[[i,1]],ScalingTransform[3,scalingVecs[[i]]]]],{i,1,Length[hybOrbs1rNew]}];hybOrbs1bScaled=Table[Graphics3D[GeometricTransformation[hybOrbs1bNew[[i,1]],ScalingTransform[3,scalingVecs[[i]]]]],{i,1,Length[hybOrbs1bNew]}];hybOrbs1rScaledP=Graphics3D[{Lighter[Red],Point@Flatten[Cases[Normal[hybOrbs1rScaled],Line[x__]x,∞],1]}];hybOrbs1bScaledP=Graphics3D[{Lighter[Blue],Point@Flatten[Cases[Normal[hybOrbs1bScaled],Line[x__]x,∞],1]}];If[view"s",{hybOrbs1rScaled,hybOrbs1bScaled},{hybOrbs1rScaledP,hybOrbs1bScaledP}]]output=Show[HybridSP["p"]]Export["hybOrb.stl",output]
-7
10
-14
10
-8
10
-8
10
-8
10
-8
10
-7
10
-14
10
-8
10
-8
10
-8
10
-8
10
-7
10
-14
10
-8
10
-8
10
-8
10
-8
10
Out[]=
$Failed
-8
10
-7
10
-14
10
-7
10
-8
10
-7
10
-8
10
-7
10
-8
10
-8
10
-8
10
-8
10
-8
10
-8
10
-8
10
-9
10
-9
10
Out[]=
$Failed
