django-vue3-admin-web/node_modules/astronomia/lib/solardisk.cjs
2025-10-20 21:21:14 +08:00

75 lines
2.1 KiB
JavaScript

'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var base = require('./base.cjs');
var nutation = require('./nutation.cjs');
var solar = require('./solar.cjs');
/**
* @copyright 2013 Sonia Keys
* @copyright 2016 commenthol
* @license MIT
* @module solardisk
*/
/**
* Ephemeris returns the apparent orientation of the sun at the given jd.
*
* Results:
* P: Position angle of the solar north pole.
* B0: Heliographic latitude of the center of the solar disk.
* L0: Heliographic longitude of the center of the solar disk.
*
* All results in radians.
*/
function ephemeris (jd, earth) { // (jd float64, e *pp.V87Planet) (P, B0, L0 float64)
const θ = (jd - 2398220) * 2 * Math.PI / 25.38;
const I = 7.25 * Math.PI / 180;
const K = 73.6667 * Math.PI / 180 +
1.3958333 * Math.PI / 180 * (jd - 2396758) / base["default"].JulianCentury;
const solarPos = solar["default"].trueVSOP87(earth, jd);
const L = solarPos.lon;
const R = solarPos.range;
const [Δψ, Δε] = nutation["default"].nutation(jd);
const ε0 = nutation["default"].meanObliquity(jd);
const ε = ε0 + Δε;
const λ = L - 20.4898 / 3600 * Math.PI / 180 / R;
const λp = λ + Δψ;
const [sλK, cλK] = base["default"].sincos(λ - K);
const [sI, cI] = base["default"].sincos(I);
const tx = -Math.cos(λp) * Math.tan(ε);
const ty = -cλK * Math.tan(I);
const P = Math.atan(tx) + Math.atan(ty);
const B0 = Math.asin(sλK * sI);
const η = Math.atan2(-sλK * cI, -cλK);
const L0 = base["default"].pmod(η - θ, 2 * Math.PI);
return [P, B0, L0]
}
/**
* Cycle returns the jd of the start of the given synodic rotation.
*
* Argument c is the "Carrington" cycle number.
*
* Result is a dynamical time (not UT).
*/
function cycle (c) { // (c int) (jde float64)
const jde = 2398140.227 + 27.2752316 * c;
const m = 281.96 * Math.PI / 180 + 26.882476 * Math.PI / 180 * c;
const [s2m, c2m] = base["default"].sincos(2 * m);
return jde + 0.1454 * Math.sin(m) - 0.0085 * s2m - 0.0141 * c2m
}
var solardisk = {
ephemeris,
cycle
};
exports.cycle = cycle;
exports["default"] = solardisk;
exports.ephemeris = ephemeris;