Source

planets/mars/orbital.ts

  1. import { Degree, Equinox, JulianDay } from '@/types'
  2. import {
  3. getPlanetEccentricity,
  4. getPlanetInclination,
  5. getPlanetLongitudeOfAscendingNode,
  6. getPlanetLongitudeOfPerihelion,
  7. getPlanetMeanLongitude,
  8. getPlanetSemiMajorAxis
  9. } from '../orbital'
  10. import { orbitalElements } from './constants'
  11. /**
  12. * Computes the orbit mean longitude at a given time.
  13. * @param {JulianDay} jd The julian day
  14. * @param {Equinox} equinox (optional) The equinox to be used: MeanOfTheDate (default) or StandardJ2000.
  15. * @returns {Degree} The mean longitude
  16. * @memberof module:Mars
  17. */
  18. export function getMeanLongitude (jd: JulianDay, equinox: Equinox = Equinox.MeanOfTheDate): Degree {
  19. return getPlanetMeanLongitude(jd, orbitalElements[equinox].meanLongitude)
  20. }
  21. /**
  22. * Computes the orbit semi major axis at a given time.
  23. * @param {JulianDay} jd The julian day
  24. * @returns {Degree} The semi major axis
  25. * @memberof module:Mars
  26. */
  27. export function getSemiMajorAxis (jd: JulianDay): Degree {
  28. return getPlanetSemiMajorAxis(jd, orbitalElements.semiMajorAxis)
  29. }
  30. /**
  31. * Computes the orbit eccentricity
  32. * @param {JulianDay} jd The julian day
  33. * @returns {Degree} The orbit eccentricity
  34. * @memberof module:Mars
  35. */
  36. export function getEccentricity (jd: JulianDay): number {
  37. return getPlanetEccentricity(jd, orbitalElements.eccentricity)
  38. }
  39. /**
  40. * Computes the orbit inclination
  41. * @param {JulianDay} jd The julian day
  42. * @param {Equinox} equinox (optional) The equinox to be used: MeanOfTheDate (default) or StandardJ2000.
  43. * @returns {Degree} The orbit inclination
  44. * @memberof module:Mars
  45. */
  46. export function getInclination (jd: JulianDay, equinox: Equinox = Equinox.MeanOfTheDate): Degree {
  47. return getPlanetInclination(jd, orbitalElements[equinox].inclination)
  48. }
  49. /**
  50. * Computes the longitude of the ascending node
  51. * @param {JulianDay} jd The julian day
  52. * @param {Equinox} equinox (optional) The equinox to be used: MeanOfTheDate (default) or StandardJ2000.
  53. * @returns {Degree} The longitude of ascending node
  54. * @memberof module:Mars
  55. */
  56. export function getLongitudeOfAscendingNode (jd: JulianDay, equinox: Equinox = Equinox.MeanOfTheDate): Degree {
  57. return getPlanetLongitudeOfAscendingNode(jd, orbitalElements[equinox].longitudeOfAscendingNode)
  58. }
  59. /**
  60. * Computes the longitude of the perihelion
  61. * @param {JulianDay} jd The julian day
  62. * @param {Equinox} equinox (optional) The equinox to be used: MeanOfTheDate (default) or StandardJ2000.
  63. * @returns {Degree} The longitude of perihelion
  64. * @memberof module:Mars
  65. */
  66. export function getLongitudeOfPerihelion (jd: JulianDay, equinox: Equinox = Equinox.MeanOfTheDate): Degree {
  67. return getPlanetLongitudeOfPerihelion(jd, orbitalElements[equinox].longitudeOfPerihelion)
  68. }