Here's my little solid angle toolbox: Vertex angles a,b,c. Four versions solidAngle[a_, b_, c_] := {ArcCos[-1 + (1 + Cos[a] + Cos[b] + Cos[c])^2/((1 + Cos[a]) (1 + Cos[b]) (1 + Cos[c]))], 2 ArcCos[1/ 4 (1 + Cos[a] + Cos[b] + Cos[c]) Sec[a/2] Sec[b/2] Sec[c/2]], 2 ArcSin[( Sqrt[-1 - Cos[2 a] - Cos[2 b] + 4 Cos[a] Cos[b] Cos[c] - Cos[2 c]] Sec[a/2] Sec[b/2] Sec[c/2])/(4 Sqrt[2])], 4 ArcTan[Sqrt[ Tan[1/4 (a + b - c)] Tan[1/4 (a - b + c)] Tan[ 1/4 (-a + b + c)] Tan[1/4 (a + b + c)]]]} Largest possible solid angle with vertex angles a,b,c,d: maxSolidAngle[a_, b_, c_, d_] := 2*ArcCos[((Cos[d] + Cos[c] + Cos[b] + Cos[a])/(4*Cos[a/2]*Cos[b/2]*Cos[c/2]* Cos[d/2])) - Tan[a/2]*Tan[b/2]*Tan[c/2]*Tan[d/2]] Dihedral between faces with vertex angles a and b: dihedral[a_, b_, c_] := ArcCos[Csc[a]*Csc[b]*Cos[c] - Cot[a]*Cot[b]] Apex and base solid angles for regular n-gon base, height h pyramidSolidAngle[n_, circumRadius_, h_] := List[2*Pi - 2*n*ArcTan[((h*Tan[Pi/n])/(Sqrt[circumRadius^2 + h^2]))], 2*ArcCos[((h^2*Sin[Pi/n])/(2*(circumRadius^2*(Cos[Pi/n])^2 + h^2))) + Csc[Pi/n]/2]] Apex and base solid angles for regular n-gon base, cos of angle between edge and altitude pyramidSolidAngle[n_, cos_] := {2*Pi - 2*n*ArcTan[cos*Tan[Pi/n]], 2*ArcCos[(Sin[Pi/n]/(2*(1 + Cos[\[Pi]/n]^2*(cos^-2 - 1)))) + Csc[Pi/n]/2]} coneSolidAngle[generatorAxisAngle_] := 2*(1 - Cos[generatorAxisAngle])*Pi sphericalPolygonArea[r_, n_, anglesum_] := r^2*(anglesum - (n - 2)*Pi) E.g., for the vertex of a regular octahedron, In[454]:= pyramidSolidAngle[4, 1, 1] Out[454]= {2 \[Pi] - 8 ArcTan[1/Sqrt[2]], 2 ArcCos[(2 Sqrt[2])/3]} or In[476]:= pyramidSolidAngle[4, 1/Sqrt[2]] Out[476]= {2 \[Pi] - 8 ArcTan[1/Sqrt[2]], 2 ArcCos[(2 Sqrt[2])/3]} or In[455]:= maxSolidAngle @@ ({\[Pi], \[Pi], \[Pi], \[Pi]}/3) Out[455]= 2 ArcCos[7/9] In[456]:= N[{%, %%}] Out[456]= {1.35935, {1.35935, 0.679674}} or, cutting the four-sided pyramidal vertex into two three-sided ones, In[458]:= 2*solidAngle[\[Pi]/3, \[Pi]/3, \[Pi]/2] Out[458]= {2 ArcCos[7/9], 4 ArcCos[(2 Sqrt[2])/3], 4 ArcSin[1/3], 8 ArcTan[Sqrt[Cot[(5 \[Pi])/24] Tan[\[Pi]/24]] Tan[\[Pi]/8]]} In[459]:= N[%] Out[459]= {1.35935, 1.35935, 1.35935, 1.35935} There doesn't appear to be a nice formula for the sum of the vertex solid angles, analogous to the 2D case: In[460]:= 6*%[[1]]/\[Pi] Out[460]= 2.59616 In[461]:= FullSimplify[%458] Out[461]= {2 ArcCos[7/9], 4 ArcCos[(2 Sqrt[2])/3], 4 ArcCsc[3], 8 ArcTan[3 - 2 Sqrt[2]]} Five different FullSimplifiactions of the same quantity! Repeating a neat result from my previous hype, What is the tetrahedral bond angle? Well, three of them lie at the apex of one those four squashed tetrahedra meeting at the center, so each solid angle is 4π/4: In[482]:= Cos /@ (solidAngle[x, x, x] == 4*\[Pi]/4*{1, 1, 1, 1}) Out[482]= {-1 + (1 + 3 Cos[x])^2/(1 + Cos[x])^3, Cos[2 ArcCos[1/4 (1 + 3 Cos[x]) Sec[x/2]^3]], Cos[2 ArcSin[(Sqrt[-1 + 4 Cos[x]^3 - 3 Cos[2 x]] Sec[x/2]^3)/( 4 Sqrt[2])]], Cos[4 ArcTan[Sqrt[Tan[x/4]^3 Tan[(3 x)/4]]]]} == {-1, -1, -1, -1} In[484]:= Solve /@ Thread[%%] Out[484]= {{{Cos[x] -> -(1/3)}, {Cos[x] -> -(1/3)}}, {{Cos[ 2 ArcCos[1/4 (1 + 3 Cos[x]) Sec[x/2]^3]] -> -1}}, {{Cos[ 2 ArcSin[(Sqrt[-1 + 4 Cos[x]^3 - 3 Cos[2 x]] Sec[x/2]^3)/( 4 Sqrt[2])]] -> -1}}, {{Cos[ 4 ArcTan[Sqrt[Tan[x/4]^3 Tan[(3 x)/4]]]] -> -1}}} In[485]:= FullSimplify[%, 0 < x < \[Pi]] Out[485]= {{{Cos[x] -> -(1/3)}, {Cos[x] -> -(1/3)}}, {{Cos[ 2 ArcCos[1/4 (1 + 3 Cos[x]) Sec[x/2]^3]] -> -1}}, {{1 - 32 (1 + 2 Cos[x]) Csc[x]^6 Sin[x/2]^10 -> -1}}, {{Cos[ 4 ArcTan[Sqrt[Tan[x/4]^3 Tan[(3 x)/4]]]] -> -1}}} So two votes for acos[-1/3) and two abstentions. --rwg
The easy way to calculate the tetrahedral bond angle β is to note that the bonds go from the origin to (1,1,1), (1,-1,-1), (-1,1,-1), and (-1,-1,1). Then cosβ = ((1,1,1).(1,-1,-1)) / (sqrt(3) sqrt(3)) = -1/3. -- Gene
participants (2)
-
Bill Gosper -
Eugene Salamin