| 1 | #include "slalib.h"
|
|---|
| 2 | #include "slamac.h"
|
|---|
| 3 | double slaDbear ( double a1, double b1, double a2, double b2 )
|
|---|
| 4 | /*
|
|---|
| 5 | ** - - - - - - - - -
|
|---|
| 6 | ** s l a D b e a r
|
|---|
| 7 | ** - - - - - - - - -
|
|---|
| 8 | **
|
|---|
| 9 | ** Bearing (position angle) of one point on a sphere relative
|
|---|
| 10 | ** to another.
|
|---|
| 11 | **
|
|---|
| 12 | ** (double precision)
|
|---|
| 13 | **
|
|---|
| 14 | ** Given:
|
|---|
| 15 | ** a1,b1 double spherical coordinates of one point
|
|---|
| 16 | ** a2,b2 double spherical coordinates of the other point
|
|---|
| 17 | **
|
|---|
| 18 | ** (The spherical coordinates are RA,Dec, Long,Lat etc, in radians.)
|
|---|
| 19 | **
|
|---|
| 20 | ** The result is the bearing (position angle), in radians, of point
|
|---|
| 21 | ** a2,b2 as seen from point a1,b1. It is in the range +/- pi. The
|
|---|
| 22 | ** sense is such that if a2,b2 is a small distance east of a1,b1,
|
|---|
| 23 | ** the bearing is about +pi/2. Zero is returned if the two points
|
|---|
| 24 | ** are coincident.
|
|---|
| 25 | **
|
|---|
| 26 | ** If either b-coordinate is outside the range +/- pi/2, the
|
|---|
| 27 | ** result may correspond to "the long way round".
|
|---|
| 28 | **
|
|---|
| 29 | ** The routine slaDpav performs an equivalent function except
|
|---|
| 30 | ** that the points are specified in the form of Cartesian unit
|
|---|
| 31 | ** vectors.
|
|---|
| 32 | **
|
|---|
| 33 | ** Last revision: 8 December 1996
|
|---|
| 34 | **
|
|---|
| 35 | ** Copyright P.T.Wallace. All rights reserved.
|
|---|
| 36 | */
|
|---|
| 37 | {
|
|---|
| 38 | double da, x, y;
|
|---|
| 39 |
|
|---|
| 40 | da = a2 - a1;
|
|---|
| 41 | y = sin ( da ) * cos ( b2 );
|
|---|
| 42 | x = sin ( b2 ) * cos ( b1 ) - cos ( b2 ) * sin ( b1 ) * cos ( da );
|
|---|
| 43 | return ( x != 0.0 || y != 0.0 ) ? atan2 ( y, x ) : 0.0;
|
|---|
| 44 | }
|
|---|