134 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			134 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
'use strict';
 | 
						|
 | 
						|
Object.defineProperty(exports, '__esModule', { value: true });
 | 
						|
 | 
						|
var base = require('./base.cjs');
 | 
						|
var nutation = require('./nutation.cjs');
 | 
						|
 | 
						|
/**
 | 
						|
 * @copyright 2013 Sonia Keys
 | 
						|
 * @copyright 2016 commenthol
 | 
						|
 * @license MIT
 | 
						|
 * @module sidereal
 | 
						|
 */
 | 
						|
 | 
						|
/**
 | 
						|
 * JDToCFrac returns values for use in computing sidereal time at Greenwich.
 | 
						|
 *
 | 
						|
 * Cen is centuries from J2000 of the JD at 0h UT of argument jd.  This is
 | 
						|
 * the value to use for evaluating the IAU sidereal time polynomial.
 | 
						|
 * DayFrac is the fraction of jd after 0h UT.  It is used to compute the
 | 
						|
 * final value of sidereal time.
 | 
						|
 *
 | 
						|
 * @param {number} jd - Julian Days
 | 
						|
 * @return {number[]} [century, fraction] century and fraction of jd after 0h UT
 | 
						|
 */
 | 
						|
function JDToCFrac (jd) {
 | 
						|
  const [j0, f] = base["default"].modf(jd + 0.5);
 | 
						|
  return [base["default"].J2000Century(j0 - 0.5), f] // (cen, dayFrac /* float */)
 | 
						|
}
 | 
						|
 | 
						|
/**
 | 
						|
 * iau82 is a polynomial giving mean sidereal time at Greenwich at 0h UT.
 | 
						|
 *
 | 
						|
 * The polynomial is in centuries from J2000.0, as given by JDToCFrac.
 | 
						|
 * Coefficients are those adopted in 1982 by the International Astronomical
 | 
						|
 * Union and are given in (12.2) p. 87.
 | 
						|
 */
 | 
						|
const iau82 = [24110.54841, 8640184.812866, 0.093104, -0.0000062];
 | 
						|
 | 
						|
/**
 | 
						|
 * Mean returns mean sidereal time at Greenwich for a given JD.
 | 
						|
 *
 | 
						|
 * Computation is by IAU 1982 coefficients.  The result is in seconds of
 | 
						|
 * time and is in the range [0,86400).
 | 
						|
 *
 | 
						|
 * @param {number} jd - Julian Days
 | 
						|
 * @return {number}
 | 
						|
 */
 | 
						|
function mean (jd) {
 | 
						|
  return base["default"].pmod(_mean(jd), 86400)
 | 
						|
}
 | 
						|
 | 
						|
/**
 | 
						|
 * @private
 | 
						|
 */
 | 
						|
function _mean (jd) {
 | 
						|
  const [s, f] = _mean0UT(jd);
 | 
						|
  return s + f * 1.00273790935 * 86400
 | 
						|
}
 | 
						|
 | 
						|
/**
 | 
						|
 * Mean0UT returns mean sidereal time at Greenwich at 0h UT on the given JD.
 | 
						|
 *
 | 
						|
 * The result is in seconds of time and is in the range [0,86400).
 | 
						|
 *
 | 
						|
 * @param {number} jd - Julian Days
 | 
						|
 * @return {number}
 | 
						|
 */
 | 
						|
function mean0UT (jd /* float */) {
 | 
						|
  const [s, _] = _mean0UT(jd); // eslint-disable-line
 | 
						|
  return base["default"].pmod(s, 86400)
 | 
						|
}
 | 
						|
 | 
						|
/**
 | 
						|
 * @private
 | 
						|
 */
 | 
						|
function _mean0UT (jd /* float */) {
 | 
						|
  const [cen, f] = JDToCFrac(jd);
 | 
						|
  // (12.2) p. 87
 | 
						|
  return [base["default"].horner(cen, ...iau82), f] // (sidereal, dayFrac /* float */)
 | 
						|
}
 | 
						|
 | 
						|
/**
 | 
						|
 * Apparent returns apparent sidereal time at Greenwich for the given JD.
 | 
						|
 *
 | 
						|
 * Apparent is mean plus the nutation in right ascension.
 | 
						|
 *
 | 
						|
 * The result is in seconds of time and is in the range [0,86400).
 | 
						|
 *
 | 
						|
 * @param {number} jd - Julian Days
 | 
						|
 * @return {number}
 | 
						|
 */
 | 
						|
function apparent (jd) {
 | 
						|
  const s = _mean(jd); // seconds of time
 | 
						|
  const n = nutation["default"].nutationInRA(jd); // angle (radians) of RA
 | 
						|
  const ns = n * 3600 * 180 / Math.PI / 15; // convert RA to time in seconds
 | 
						|
  return base["default"].pmod(s + ns, 86400)
 | 
						|
}
 | 
						|
 | 
						|
/**
 | 
						|
 * Apparent0UT returns apparent sidereal time at Greenwich at 0h UT
 | 
						|
 * on the given JD.
 | 
						|
 *
 | 
						|
 * The result is in seconds of time and is in the range [0,86400).
 | 
						|
 *
 | 
						|
 * @param {number} jd - Julian Days
 | 
						|
 * @return {number}
 | 
						|
 */
 | 
						|
function apparent0UT (jd) {
 | 
						|
  const [j0, f] = base["default"].modf(jd + 0.5);
 | 
						|
  const cen = (j0 - 0.5 - base["default"].J2000) / 36525;
 | 
						|
  const s = base["default"].horner(cen, ...iau82) + f * 1.00273790935 * 86400;
 | 
						|
  const n = nutation["default"].nutationInRA(j0); // angle (radians) of RA
 | 
						|
  const ns = n * 3600 * 180 / Math.PI / 15; // convert RA to time in seconds
 | 
						|
  return base["default"].pmod(s + ns, 86400)
 | 
						|
}
 | 
						|
 | 
						|
var sidereal = {
 | 
						|
  JDToCFrac,
 | 
						|
  iau82,
 | 
						|
  mean,
 | 
						|
  mean0UT,
 | 
						|
  apparent,
 | 
						|
  apparent0UT
 | 
						|
};
 | 
						|
 | 
						|
exports.JDToCFrac = JDToCFrac;
 | 
						|
exports.apparent = apparent;
 | 
						|
exports.apparent0UT = apparent0UT;
 | 
						|
exports["default"] = sidereal;
 | 
						|
exports.iau82 = iau82;
 | 
						|
exports.mean = mean;
 | 
						|
exports.mean0UT = mean0UT;
 |