网上找的:
8 o" o, l1 a: v' w `8 [
2 w6 F1 Z& a. M9 S# b: |- {已知两天体赤经赤纬,如何计算角距离? ; n7 C. _1 Z! J. @1 O& h$ Z$ k
' t0 E* S/ n" O
如果你了解球坐标和向量代数, 化为球极坐标问题来解决思路比较简明清晰. (下面, 赤经---R.A. 赤纬---Dec), q, O: A- ^* _, ^) L5 j- Y
7 l: G! L7 ?. m* [5 X
每颗恒星在单位球上的投影的球坐标为(r, theta, phi), 这里r=1, theta=-(Dec-90), phi=R.A.
+ ?+ y& w1 `# R4 j
7 Y; ~' e J% i$ G" P4 z变成投影点的直角坐标:
- G% X/ Q, v" y. }& `( Ix=sin(theta)cos(phi)
% A$ f6 Y9 l. }: F) Xy=sin(theta)sin(phi) V# M( f2 o: }' S4 q' P) ^$ v: `
z=cos(theta) 3 K2 r3 n B, N
7 P; E4 \# `3 R) H4 U5 z3 ?! S这样可以把两颗星投影的角距离变为求两点间对球心的张角的简单问题. (点x0, y0, z0与点x1, y1, z1). 如果你用的角距离不大于180度(=Pi), 那么这个张角的值A可以直接求出: A=arc cos (x0*x1+y0*y1+z0*z1) ( n8 l' p" @- `' _
& k' }# M6 u8 X1 K/ L( A
==============================================================" L% W: T) p- Y* n# |5 x' d& f
令:
, J: H- j" i3 T* x+ s3 @2 G# Y赤纬 = a1, a2; k4 R, P) |4 j
赤经 = b1, b28 _+ s0 S% _! D$ x' q
9 W2 b& r4 p' M0 o
则:& G! N- @* m* |! {7 i3 ]
, S4 z4 @; @, o+ k
角距离 = arccos(sin(a1) * sin(a2) + cos(a1) * cos(a2) * cos(b2 - b1)) |