注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

激光遥感

奋斗,探求,不达目的,誓不罢休!

 
 
 

日志

 
 
关于我

I was a university teacher, main interest areas:1、Spatio-temporal data analysis 2、Machine Learning3、 Pattern Recognition

网易考拉推荐

立体角  

2014-06-18 12:42:00|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

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

\Omega=\frac{S}{r^{2}} = \iint_S \frac { \vec{r} \cdot \textrm{d}\vec{S}}{r^3}

这和“平面角是圆的弧长与半径的比”类似。

立体角的国际制单位是球面度(steradian,sr),一个完整的球面对于球内任意一点的立体角为4π sr(对于球外任意一点的立体角为0 sr)。立体角有一个非国际制单位平方度,1 sr = (180/π)2 square degree

球坐标系中,: d\Omega = \sin\theta\,d\theta\,d\varphi

圆锥,球冠


2r \sin \left( \frac{ \theta}{2} \right).\, 应该注意阿基米德在2200年前不用微积分证明了球冠的表面积与半径为球冠边沿到球冠最低点的距离的圆的面积相等。球冠边沿到球冠最低点的距离为

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

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


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

任意四面体的立体角

对于任意一个四面体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 程序:

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

  评论这张
 
阅读(380)| 评论(0)
推荐

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017