Module: IERS::EopLookup Private

Defined in:
lib/iers/eop_lookup.rb

This module is part of a private API. You should avoid using this module if possible, as it may be removed or be changed in the future.

Class Method Summary collapse

Class Method Details

.bracket(entries, mjd) ⇒ Array

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns two-element array bracketing the query point.

Parameters:

  • entries (Array)

    sorted finals entries

  • mjd (Float)

Returns:

  • (Array)

    two-element array bracketing the query point

Raises:



40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# File 'lib/iers/eop_lookup.rb', line 40

def bracket(entries, mjd)
  validate_range!(entries, mjd)

  index = entries.bsearch_index { |e| e.mjd > mjd }

  if index.nil? || index == 0
    raise OutOfRangeError.new(
      "No bracket available for MJD #{mjd}",
      requested_mjd: mjd,
      available_range: entries.first.mjd..entries.last.mjd
    )
  end

  [entries[index - 1], entries[index]]
end

.range(entries, start_mjd, end_mjd) ⇒ Array

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns entries within the MJD range (inclusive).

Parameters:

  • entries (Array)

    sorted finals entries

  • start_mjd (Float)
  • end_mjd (Float)

Returns:

  • (Array)

    entries within the MJD range (inclusive)



30
31
32
33
34
# File 'lib/iers/eop_lookup.rb', line 30

def range(entries, start_mjd, end_mjd)
  first = entries.bsearch_index { |e| e.mjd >= start_mjd } || entries.size
  last = entries.bsearch_index { |e| e.mjd > end_mjd } || entries.size
  entries[first...last]
end

.window(entries, mjd, order: 4) ⇒ Array

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Parameters:

  • entries (Array)

    sorted finals entries

  • mjd (Float)
  • order (Integer) (defaults to: 4)

    number of points in the window

Returns:

  • (Array)

Raises:



13
14
15
16
17
18
19
20
21
22
23
24
# File 'lib/iers/eop_lookup.rb', line 13

def window(entries, mjd, order: 4)
  validate_range!(entries, mjd)

  index = entries.bsearch_index { |e| e.mjd > mjd } || entries.size
  center = index - 1

  half = order / 2
  start = center - half + 1
  start = start.clamp(0, entries.size - order)

  entries[start, order]
end