35 double* tara,
double* tare,
double* tarr,
double* tarp,
289 const double D90 = 1.570796326794896619231322,
290 D180 = 3.141592653589793238462643,
291 ARCSEC = 4.848136811095359935899141e-6;
294 const double TINY = 1e-20;
297 double atar, etar, ri,
di, aob, zob, hob, dob, rob, pae[3], rm[3][3],
298 p[3], srma, crma, a, b, ad, ed, x, y, z, a1, b1, a2, b2, au,
299 bu, xi, eta, f, xtel, ytel, ztel, w;
323 }
else if ( tar->
sys ==
APPT ) {
326 ri = tar->
a + ast->
eo;
348 iauS2c ( D180 - atar, etar, pae );
386 a = ax3->
a + pm->
pia;
387 b = ax3->
b + pm->
pib;
402 iauS2c ( ad, ed + pm->
pvd * cos(ed), p );
413 j = A2e ( p[0], p[1], p[2], x, y, z, 0.0, 0.0, pm->
pnp, srma, crma,
414 0.0, 0.0, 0.0, 0.0, &a1, &b1, &a2, &b2 );
418 if ( fabs(ax3->
b) < D90 ) {
428 j = A2tp ( p[0], p[1], p[2], x, y, z, pm->
pnp, au, bu, &xi, &eta );
432 f = sqrt ( 1.0 + xi*xi + eta*eta );
433 xtel = ( x - xi*y ) / f;
434 ytel = ( y + xi*x ) / f;
455 Aim ( rm, pae, &x, &y, &z );
458 w = sqrt ( x*x + y*y );
459 if ( w < obs->pavoid ){
460 if ( x == 0.0 && y == 0.0 ) x = y =
TINY;
464 z = sqrt ( 1.0 - x*x - y*y );
469 j = A2e ( x, y, z, xtel, ytel, ztel,
472 &a1, &b1, &a2, &b2 );
506 j = Sky ( ax3->
a, ax3->
b, xtel, ytel, ztel,
508 x, y, pm->
ga, pm->
gb, rm, ast, tar->
sys,
516 j = Sky ( ax3->
a, ax3->
b, xtel, ytel, ztel,
518 x, y, pm->
ga, pm->
gb, rm, ast, tar->
sys,
529 w =
iauPas ( a1, b1, a2, b2 );
532 soln[4] =
iauAnp ( ax3->
r - w );
544 Aim ( rm, pae, &x, &y, &z );
547 a = ax3->
a + pm->
pia;
548 b = ax3->
b + pm->
pib;
551 j = A2tp ( x, y, z, xtel, ytel, ztel, pm->
pnp, a, b, &xi, &eta );
559 x = - xi*crma + eta*srma;
560 y = - xi*srma - eta*crma;
563 soln[0] = x * opt->
fl;
564 soln[1] = y * opt->
fl;
577 j = Sky ( ax3->
a, ax3->
b, xtel, ytel, ztel,
597 if ( jpav )
return 1;
722 double xbs, ybs, zbs, snp, cnp, p, s, c, b1, b2, sb, cb, x, y,
735 Bs ( xtel, ytel, ztel, srma, crma, xpo, ypo, ga, gb,
850 double rp[3][3], p[3], xb, yb, zb, x, y, z, r2, r, w, d;
1029 double a, b, rp[3][3], p[3], az, el, aob, ri,
di;
1043 Bs ( xtel, ytel, ztel, srma, crma, xpo, ypo, ga, gb, p, p+1, p+2 );
int spkVtel(spkVTS isoln, spkOBS *obs, spkOPT *opt, spkPM *pm, spkAST *ast, spkAX3 *ax3, spkTAR *tar, spkPO *po, double *tara, double *tare, double *tarr, double *tarp, double soln[5])