立体角

<image>

立体角，常用字母Ω表示，是一个物体对特定点的三维空间的角度，是平面角在三维空间中的类比。它描述的是站在某一点的观察者测量到的物体大小的尺度。例如，对于一个特定的观察点，一个在该观察点附近的小物体有可能和一个远处的大物体有着相同的立体角。

锥体的立体角大小定义为，以锥体的顶点为球心作球面，该锥体在球表面截取的面积与球半径平方之比，单位为球面度（sr）。一个球体即是4π，半球即是2π。

## 立体角的定义

<image>

以观测点为球心，构造一个单位球面；任意物体投影到该单位球面上的投影面积，即为该物体相对于该观测点的立体角。

因此，立体角是单位球面上的一块面积，这和“平面角是单位圆上的一段弧长”类似。

### 立体角公式

在球坐标系中。

$$dA = (r\sin\theta\,d\varphi)(r d\theta)=r^2(\sin\theta\,d\theta\,d\varphi)$$

因此，极小立体角（单位球面上的极小面积）为：

$$d\Omega = \frac{dA}{r^2} = \sin\theta\,d\theta\,d\varphi$$

所以，立体角是投影面积与球半径平方值的比，这和“平面角是圆的弧长与半径的比”类似。

对极小立体角做曲面积分即可得立体角：

$$\Omega= \iint_S d\Omega = \iint_S \sin\theta\,d\theta\,d\varphi$$

### 任意定向曲面的立体角

任意定向曲面 $\vec{S}$ 相对于某一个点 $P$ 的立体角，即为该曲面投影到以 $P$ 为球心的单位球面上的面积。

令 $\vec{r}$ 为该单位球面上以 $P$ 为原点的极小面积的位置向量，可以得到以下公式：

$$\Omega= \iint_S \frac{dA}{r^{2}} =\iint_S \frac { \vec{r} \cdot \textrm{d}\vec{S}}{\left| \vec{r} \right|\, r^2}= \iint_S \frac { \vec{r} \cdot \textrm{d}\vec{S}}{ r^3}$$

### 立体角的单位

立体角的国际制单位是球面度（steradian，sr）。立体角有一个非国际制单位平方度，1 sr = (180/π)2 square degree。

### 封闭曲面的立体角

一个完整的球面对于球内任意一点的立体角为4π sr（对于球外任意一点的立体角为0 sr）：

${\scriptstyle S}$ $\ \sin\theta\,d\theta\,d\varphi$ $\ = \int_0^\pi \sin\theta d\theta \int_0^{2\pi} d\varphi = [-\cos\theta]_0^{\pi} (2\pi) = 4\pi$

这个定理对所有封闭曲面皆成立，它也是高斯定律的主要依据。

## 立体角的应用

立体角在物理上有相当多的应用：

- 计算电通量与磁通量，是高斯常用的数学方法。在高斯的环绕数中，也使用了立体角来推导出环绕数的公式。
- 计算发光强度。

## 常见几何体的立体角

### 圆锥，球冠

<image>

顶角为2$\theta$的圆锥的立体角为一个单位球的球冠。

$$\Omega = 2 \pi \left (1 - \cos {\theta} \right) .\,\!$$

（上面结果由下式得到）

$$\int_0^{2\pi} \int_0^{\theta} \sin \theta' \ d \theta' \ d \phi = 2\pi\int_0^{\theta} \sin \theta' \ d \theta' = 2\pi\left[ -\cos \theta' \right]_0^{\theta} \ = 2\pi\left(1 -\cos \theta \right).$$

应该注意阿基米德在2200年前不用微积分证明了球冠的表面积与半径为球冠边沿到球冠最低点的距离的圆的面积相等。

$$2r \sin \left( \frac{ \theta}{2} \right).\,$$

显然，在单位圆中球冠立体角为

$$\Omega = 4 \pi \sin^2 \left( \frac{ \theta}{2} \right) = 2 \pi \left (1 - \cos {\theta} \right) .\,\!$$

当 θ = π/2，球冠变为有着立体角 2π的半球。

当 θ = π，立体角涵盖整个球体，球冠变为有着立体角 4π的球，我们将4π称为全方位立体角。

### 任意四面体的立体角

对于任意一个四面体OABC,其中O,A,B,C分别为四面体的四个顶点。下面给出一个公式，计算从O点观察三角形ABC的立体角Ω的方便简单的公式。令α=∠BOC，β=∠AOC，γ=∠AOB(均为各自平面内两条直线的夹角，可以采用平面三角形的余弦公式计算求得)，$s = \frac {1}{2} (\alpha + \beta + \gamma).$有(参见L' Huilier')

$$\tan \left( \frac{\Omega}{4} \right) = \sqrt{ \tan \left( \frac{s}{2}\right) \tan \left( \frac{s - \alpha}{2}\right) \tan \left( \frac{s - \beta}{2}\right) \tan \left( \frac{s - \gamma}{2}\right)}$$

附上相应的Fortran 程序：

```fortran
program solid_angle
REAL X(4),Y(4),Z(4)  !存放四个顶点的三维坐标，依次为A,B,C,O（程序中以P点代替，为观测点）

X(1)=1         
X(2)=0
X(3)=0
X(4)=0
Y(1)=0
Y(2)=1
Y(3)=0
Y(4)=0
Z(1)=0
Z(2)=0
Z(3)=1
Z(4)=0

以单位1球体，在第一象限的八分之一球所含的四面体为例。程序可适用于任意四面体。

分别计算6条棱的长度的平方
PA=(X(4)-X(1))**2+(Y(4)-Y(1))**2+(Z(4)-Z(1))**2
PB=(X(4)-X(2))**2+(Y(4)-Y(2))**2+(Z(4)-Z(2))**2
PC=(X(4)-X(3))**2+(Y(4)-Y(3))**2+(Z(4)-Z(3))**2

AB=(X(1)-X(2))**2+(Y(1)-Y(2))**2+(Z(1)-Z(2))**2
BC=(X(3)-X(2))**2+(Y(3)-Y(2))**2+(Z(3)-Z(2))**2
AC=(X(1)-X(3))**2+(Y(1)-Y(3))**2+(Z(1)-Z(3))**2

应用余弦公式计算三个夹角

COSALPHA=(PB+PC-BC)/2.0/SQRT(PB*PC)
COSBETA=(PA+PC-AC)/2.0/SQRT(PA*PC)
COSGAMA=(PB+PA-AB)/2.0/SQRT(PB*PA)

ALPHA=acos((PB+PC-BC)/2.0/SQRT(PB*PC))
BETA=acos((PA+PC-AC)/2.0/SQRT(PA*PC))
GAMA=acos((PB+PA-AB)/2.0/SQRT(PB*PA))

s=(alpha+beta+gama)/2.

omiga=atan(sqrt(tan(s/2.)*tan(s/2.-alpha/2.)*tan(s/2.-beta/2.)*tan(s/2.-gama/2.)))*4.

write(*,*) omiga*180./3.14159
end 
```

## 外部链接

- YouTube: Chapter 23 02 Solid Angle