From 62311168bf27b18e8d0c83d0d38659f10de10163 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20Hannequin?= Date: Mon, 8 Jun 2026 10:04:31 +0200 Subject: [PATCH 1/5] [DRAFT] PCK support --- README.md | 54 +++++ benchmarks/run.rb | 28 +++ lib/ephem.rb | 8 + lib/ephem/core/orientation.rb | 104 ++++++++ lib/ephem/core/rotation.rb | 82 +++++++ lib/ephem/download.rb | 36 ++- lib/ephem/excerpt.rb | 19 +- lib/ephem/io/daf.rb | 17 ++ lib/ephem/pck.rb | 102 ++++++++ lib/ephem/segments/base_segment.rb | 33 ++- lib/ephem/segments/chebyshev_type2.rb | 147 +++++++++++ lib/ephem/segments/orientation_group.rb | 45 ++++ lib/ephem/segments/orientation_segment.rb | 112 +++++++++ lib/ephem/segments/position_group.rb | 46 ++++ lib/ephem/segments/registry.rb | 12 +- lib/ephem/segments/segment.rb | 228 +----------------- lib/ephem/segments/segment_group.rb | 74 ++++++ lib/ephem/spk.rb | 24 +- lib/ephem/tasks/validate_accuracy.rb | 2 +- spec/ephem/core/orientation_spec.rb | 93 +++++++ spec/ephem/core/rotation_spec.rb | 104 ++++++++ spec/ephem/download_spec.rb | 31 +++ spec/ephem/io/daf_spec.rb | 32 +++ spec/ephem/pck_spec.rb | 109 +++++++++ .../segments/orientation_segment_spec.rb | 128 ++++++++++ spec/ephem/segments/segment_group_spec.rb | 99 ++++++++ spec/ephem/segments/segment_spec.rb | 14 ++ spec/ephem/spk_spec.rb | 8 + spec/support/data/moon_pa_de440_excerpt.bpc | Bin 0 -> 56608 bytes spec/support/test_spk_helper.rb | 4 + 30 files changed, 1549 insertions(+), 246 deletions(-) create mode 100644 lib/ephem/core/orientation.rb create mode 100644 lib/ephem/core/rotation.rb create mode 100644 lib/ephem/pck.rb create mode 100644 lib/ephem/segments/chebyshev_type2.rb create mode 100644 lib/ephem/segments/orientation_group.rb create mode 100644 lib/ephem/segments/orientation_segment.rb create mode 100644 lib/ephem/segments/position_group.rb create mode 100644 lib/ephem/segments/segment_group.rb create mode 100644 spec/ephem/core/orientation_spec.rb create mode 100644 spec/ephem/core/rotation_spec.rb create mode 100644 spec/ephem/io/daf_spec.rb create mode 100644 spec/ephem/pck_spec.rb create mode 100644 spec/ephem/segments/orientation_segment_spec.rb create mode 100644 spec/ephem/segments/segment_group_spec.rb create mode 100644 spec/support/data/moon_pa_de440_excerpt.bpc diff --git a/README.md b/README.md index 0e28a44..285b5d2 100644 --- a/README.md +++ b/README.md @@ -99,6 +99,60 @@ puts "Velocity: #{state.velocity}" # The velocity is expressed in km/day ``` +## Orientation kernels (binary PCK) + +Binary PCK (`DAF/PCK`) kernels store the orientation of a body frame over time +as Euler angles, rather than position. The most common use is the Moon's +physical libration via a lunar orientation kernel such as +`moon_pa_de440_200625.bpc`. + +```rb +# Download and load a binary PCK orientation kernel +Ephem::Download.call( + name: "moon_pa_de440_200625.bpc", + target: "tmp/moon_pa_de440_200625.bpc" +) +pck = Ephem::PCK.open("tmp/moon_pa_de440_200625.bpc") + +puts pck +# => PCK file with 2 segments: +# 1549-12-21..2426-02-16 Type 2 orientation of frame 31008 relative to frame 1 +# 2426-02-16..2650-01-25 Type 2 orientation of frame 31008 relative to frame 1 + +# Query a body frame by its NAIF frame ID (31008 = MOON_PA_DE440). +# The time is expressed in Julian Date (TDB). +frame = pck[31008] +orientation = frame.orientation_at(2451545.0) + +# The three classical 3-1-3 (Z-X-Z) Euler angles, in radians +puts "phi: #{orientation.phi}" +puts "theta: #{orientation.theta}" +puts "psi: #{orientation.psi}" + +# Rates are in radians/day (ephem's per-day convention, like SPK velocities) +puts "rates: #{orientation.rates.inspect}" + +# Use #angles_at when you do not need the rates (it skips the derivative) +angles = frame.angles_at(2451545.0) + +pck.close +``` + +`Ephem::Core::Rotation` provides kernel-agnostic helpers to turn Euler angles +into a 3x3 rotation matrix and apply it to a vector, so you can build a +body-fixed frame from the angles: + +```rb +phi, theta, psi = angles.to_a +# Compose the inertial -> body-fixed rotation (3-1-3 sequence) +matrix = Ephem::Core::Rotation.multiply( + Ephem::Core::Rotation.about_z(psi), + Ephem::Core::Rotation.about_x(theta), + Ephem::Core::Rotation.about_z(phi) +) +body_fixed = Ephem::Core::Rotation.apply(matrix, some_vector) +``` + ## CLI The gem also provides a CLI to generate an excerpt from an original kernel file. diff --git a/benchmarks/run.rb b/benchmarks/run.rb index 4483a5c..27b85a3 100644 --- a/benchmarks/run.rb +++ b/benchmarks/run.rb @@ -12,6 +12,8 @@ SPK_FULL = File.join(ROOT, "spec", "support", "data", "de432s.bsp") SPK_EXCERPT = File .join(ROOT, "spec", "support", "data", "de421_2000_excerpt.bsp") +PCK_EXCERPT = File + .join(ROOT, "spec", "support", "data", "moon_pa_de440_excerpt.bpc") JD_J2000 = Ephem::Core::Constants::Time::J2000_EPOCH # 2451545.0 JD_TEST = 2459000.0 # 2020-09-30, well within de432s range @@ -388,6 +390,32 @@ def ensure_file!(path) puts " Components per term: #{coeffs.first&.first&.size}" end +# ========================================================================= +# 13. PCK ORIENTATION (BINARY PCK) +# ========================================================================= + +separator "13. PCK Orientation (Binary PCK)" + +puts "angles_at (Euler angles) vs orientation_at (angles + rates)" +puts + +pck = Ephem::PCK.open(PCK_EXCERPT) +moon = pck[31008] # MOON_PA_DE440 frame +moon.angles_at(JD_J2000) # warm up + +orientation_times = Array.new(SEQUENTIAL_STEPS) { |index| JD_J2000 + index } + +GC.start +Benchmark.ips do |x| + x.report("angles_at (scalar)") { moon.angles_at(JD_J2000) } + x.report("orientation_at (scalar)") { moon.orientation_at(JD_J2000) } + x.report("angles_at (batch 1000)") { moon.angles_at(orientation_times) } + + x.compare! +end + +pck.close + # ========================================================================= # Cleanup # ========================================================================= diff --git a/lib/ephem.rb b/lib/ephem.rb index f31c178..30fe083 100644 --- a/lib/ephem.rb +++ b/lib/ephem.rb @@ -6,6 +6,8 @@ require_relative "ephem/core/calendar_calculations" require_relative "ephem/core/state" require_relative "ephem/core/vector" +require_relative "ephem/core/orientation" +require_relative "ephem/core/rotation" require_relative "ephem/error" require_relative "ephem/io/binary_reader" require_relative "ephem/io/daf" @@ -15,9 +17,15 @@ require_relative "ephem/io/record_parser" require_relative "ephem/io/summary_manager" require_relative "ephem/spk" +require_relative "ephem/pck" require_relative "ephem/segments/base_segment" require_relative "ephem/segments/registry" +require_relative "ephem/segments/chebyshev_type2" require_relative "ephem/segments/segment" +require_relative "ephem/segments/orientation_segment" +require_relative "ephem/segments/segment_group" +require_relative "ephem/segments/position_group" +require_relative "ephem/segments/orientation_group" require_relative "ephem/excerpt" require_relative "ephem/cli" require_relative "ephem/version" diff --git a/lib/ephem/core/orientation.rb b/lib/ephem/core/orientation.rb new file mode 100644 index 0000000..bfd9419 --- /dev/null +++ b/lib/ephem/core/orientation.rb @@ -0,0 +1,104 @@ +# frozen_string_literal: true + +module Ephem + module Core + # The orientation of a body, expressed as the three Euler angles that rotate + # a reference frame (e.g. J2000/ICRF) into the body-fixed frame, optionally + # with their time derivatives. + # + # For binary PCK orientation kernels the angles are the classical 3-1-3 + # (Z-X-Z) sequence: +phi+ and +theta+ orient the pole and +psi+ is the + # rotation about it (the prime meridian). Angles are in radians and rates, + # when present, in radians per day — matching ephem's per-day rate + # convention for SPK velocities (divide by 86400 for radians per second). + class Orientation + # @return [Numeric] first Euler angle (radians) + attr_reader :phi + + # @return [Numeric] second Euler angle (radians) + attr_reader :theta + + # @return [Numeric] third Euler angle (radians) + attr_reader :psi + + # @return [Array, nil] [phi, theta, psi] rates (radians/day), + # or nil when the orientation carries no rates + attr_reader :rates + + # @param phi [Numeric] first Euler angle (radians) + # @param theta [Numeric] second Euler angle (radians) + # @param psi [Numeric] third Euler angle (radians) + # @param rates [Array, nil] optional [phi, theta, psi] rates + # (radians/day) + # @raise [Ephem::InvalidInputError] if any angle or rate is not numeric + def initialize(phi, theta, psi, rates: nil) + unless phi.is_a?(Numeric) && theta.is_a?(Numeric) && psi.is_a?(Numeric) + raise InvalidInputError, "Orientation angles must be numeric" + end + + unless rates.nil? || valid_rates?(rates) + raise InvalidInputError, "Orientation rates must be three numerics" + end + + @phi = phi + @theta = theta + @psi = psi + @rates = rates&.freeze + freeze + end + + def self.[](phi, theta, psi, rates: nil) + new(phi, theta, psi, rates: rates) + end + + # @return [Boolean] whether this orientation carries rates + def rates? + !@rates.nil? + end + + # @return [Array] the three Euler angles [phi, theta, psi] + def to_a + [phi, theta, psi] + end + + # @param index [Integer] 0 for phi, 1 for theta, 2 for psi + # @return [Numeric] the angle at the given index + # @raise [Ephem::IndexError] if index is not 0, 1, or 2 + def [](index) + case index + when 0 then phi + when 1 then theta + when 2 then psi + else raise IndexError, "Invalid index: #{index}" + end + end + + def inspect + base = "phi: #{phi}, theta: #{theta}, psi: #{psi}" + rates? ? "Orientation[#{base}, rates: #{rates}]" : "Orientation[#{base}]" + end + alias_method :to_s, :inspect + + def hash + [phi, theta, psi, rates, self.class].hash + end + + def ==(other) + unless other.is_a?(self.class) + raise InvalidInputError, "Can only compare with another Orientation" + end + + to_a == other.to_a && rates == other.rates + end + alias_method :eql?, :== + + private + + def valid_rates?(rates) + rates.is_a?(Array) && + rates.size == 3 && + rates.all?(Numeric) + end + end + end +end diff --git a/lib/ephem/core/rotation.rb b/lib/ephem/core/rotation.rb new file mode 100644 index 0000000..32c24a3 --- /dev/null +++ b/lib/ephem/core/rotation.rb @@ -0,0 +1,82 @@ +# frozen_string_literal: true + +module Ephem + module Core + # Builds and applies 3x3 rotation matrices. Kernel-agnostic: callers choose + # the axis sequence and order that matches their frame convention. + # + # The elementary rotations use the coordinate-frame (passive) convention: + # they express a fixed vector in a frame rotated by +angle about the axis + module Rotation + # @param angle [Numeric] rotation angle in radians + # @return [Array>] rotation about the X axis + def self.about_x(angle) + cosine = Math.cos(angle) + sine = Math.sin(angle) + [ + [1.0, 0.0, 0.0], + [0.0, cosine, sine], + [0.0, -sine, cosine] + ] + end + + # @param angle [Numeric] rotation angle in radians + # @return [Array>] rotation about the Y axis + def self.about_y(angle) + cosine = Math.cos(angle) + sine = Math.sin(angle) + [ + [cosine, 0.0, -sine], + [0.0, 1.0, 0.0], + [sine, 0.0, cosine] + ] + end + + # @param angle [Numeric] rotation angle in radians + # @return [Array>] rotation about the Z axis + def self.about_z(angle) + cosine = Math.cos(angle) + sine = Math.sin(angle) + [ + [cosine, sine, 0.0], + [-sine, cosine, 0.0], + [0.0, 0.0, 1.0] + ] + end + + # Product of rotation matrices in the given order, as standard matrix + # multiplication: +multiply(a, b, c)+ returns +a * b * c+. + # + # @param matrices [Array>>] one or more 3x3 matrices + # @return [Array>] the combined rotation matrix + def self.multiply(*matrices) + matrices.reduce { |product, matrix| multiply_pair(product, matrix) } + end + + # Applies a rotation matrix to a vector. + # + # @param matrix [Array>] a 3x3 rotation matrix + # @param vector [Core::Vector, Array] the vector to rotate + # @return [Core::Vector] the rotated vector + def self.apply(matrix, vector) + x, y, z = vector.to_a + Vector.new( + matrix[0][0] * x + matrix[0][1] * y + matrix[0][2] * z, + matrix[1][0] * x + matrix[1][1] * y + matrix[1][2] * z, + matrix[2][0] * x + matrix[2][1] * y + matrix[2][2] * z + ) + end + + def self.multiply_pair(left, right) + Array.new(3) do |row| + Array.new(3) do |column| + left[row][0] * right[0][column] + + left[row][1] * right[1][column] + + left[row][2] * right[2][column] + end + end + end + private_class_method :multiply_pair + end + end +end diff --git a/lib/ephem/download.rb b/lib/ephem/download.rb index 32f0513..7af24d9 100644 --- a/lib/ephem/download.rb +++ b/lib/ephem/download.rb @@ -11,6 +11,8 @@ module Ephem class Download JPL_BASE_URL = "https://ssd.jpl.nasa.gov/ftp/eph/planets/bsp/" IMCCE_BASE_URL = "https://ftp.imcce.fr/pub/ephem/planets/" + NAIF_PCK_BASE_URL = + "https://naif.jpl.nasa.gov/pub/naif/generic_kernels/pck/" JPL_KERNELS = %w[ de102.bsp @@ -59,6 +61,11 @@ class Download de441.bsp ].freeze + NAIF_PCK_KERNELS = %w[ + moon_pa_de421_1900-2050.bpc + moon_pa_de440_200625.bpc + ].freeze + IMCCE_KERNELS = { "inpop10b.bsp" => "inpop10b_TDB_m100_p100_spice.bsp", "inpop10b_large.bsp" => "inpop10b_TDB_m1000_p1000_spice.bsp", @@ -90,7 +97,8 @@ class Download "inpop21a_large.bsp" => "inpop21a/inpop21a_TDB_m1000_p1000_spice.tar.gz" }.freeze - SUPPORTED_KERNELS = (JPL_KERNELS + IMCCE_KERNELS.keys).freeze + SUPPORTED_KERNELS = + (JPL_KERNELS + NAIF_PCK_KERNELS + IMCCE_KERNELS.keys).freeze def self.call(name:, target:) new(name, target).call @@ -104,12 +112,22 @@ def initialize(name, target_path) def call FileUtils.mkdir_p(@target_path.dirname) - jpl_kernel? ? download_jpl : download_imcce + download_kernel true end private + def download_kernel + if jpl_kernel? + download_jpl + elsif pck_kernel? + download_naif_pck + else + download_imcce + end + end + def validate_requested_kernel! unless SUPPORTED_KERNELS.include?(@name) raise UnsupportedError, @@ -121,8 +139,20 @@ def jpl_kernel? JPL_KERNELS.include?(@name) end + def pck_kernel? + NAIF_PCK_KERNELS.include?(@name) + end + def download_jpl - uri = URI.join(JPL_BASE_URL, @name) + download_direct(JPL_BASE_URL) + end + + def download_naif_pck + download_direct(NAIF_PCK_BASE_URL) + end + + def download_direct(base_url) + uri = URI.join(base_url, @name) @target_path.open("wb") do |file| stream_http_to_file(uri, file) end diff --git a/lib/ephem/excerpt.rb b/lib/ephem/excerpt.rb index 09e8971..8032522 100644 --- a/lib/ephem/excerpt.rb +++ b/lib/ephem/excerpt.rb @@ -1,9 +1,9 @@ # frozen_string_literal: true module Ephem - # The Excerpt class creates SPK file excerpts with reduced time spans and - # target bodies. This is useful for creating smaller files that focus only on - # the data needed for specific applications. + # The Excerpt class creates DAF excerpts (SPK or binary PCK) with reduced time + # spans and bodies. This is useful for creating smaller files that focus only + # on the data needed for specific applications. # # @example Create an excerpt with specific time range and bodies # spk = Ephem::SPK.open("de421.bsp") @@ -31,11 +31,12 @@ def initialize(spk) # @param output_path [String] Path where the excerpt will be written # @param start_jd [Float] Start time as Julian Date # @param end_jd [Float] End time as Julian Date - # @param target_ids [Array, nil] Optional list of target IDs to - # include + # @param target_ids [Array, nil] Optional list of target/body IDs + # to include # @param debug [Boolean] Whether to print debug information # - # @return [Ephem::SPK] A new SPK instance for the excerpt file + # @return [Ephem::SPK, Ephem::PCK] A new instance for the excerpt file, + # matching the source kernel kind def extract(output_path:, start_jd:, end_jd:, target_ids: nil, debug: false) start_seconds = seconds_since_j2000(start_jd) end_seconds = seconds_since_j2000(end_jd) @@ -46,11 +47,15 @@ def extract(output_path:, start_jd:, end_jd:, target_ids: nil, debug: false) process_segments(writer, start_seconds, end_seconds, target_ids, debug) output_file.close - SPK.open(output_path) + reopen(output_path) end private + def reopen(path) + (@daf.file_type == :pck) ? PCK.open(path) : SPK.open(path) + end + def seconds_since_j2000(jd) (jd - J2000_EPOCH) * S_PER_DAY end diff --git a/lib/ephem/io/daf.rb b/lib/ephem/io/daf.rb index ff684e1..cbbce85 100644 --- a/lib/ephem/io/daf.rb +++ b/lib/ephem/io/daf.rb @@ -15,6 +15,11 @@ def comments @comments ||= load_comments end + # @return [Symbol, nil] + def file_type + @file_type ||= detect_file_type + end + def summaries(&block) return enum_for(:summaries) unless block_given? @@ -36,6 +41,18 @@ def close private + def detect_file_type + case @record_data.locator_identifier + when "DAF/SPK" then :spk + when "DAF/PCK" then :pck + else + case @record_data.integer_count + when 6 then :spk + when 5 then :pck + end + end + end + def setup_file_format file_record = @binary_reader.read_record(1) endianness_info = EndiannessManager.new(file_record).detect_endianness diff --git a/lib/ephem/pck.rb b/lib/ephem/pck.rb new file mode 100644 index 0000000..f542aff --- /dev/null +++ b/lib/ephem/pck.rb @@ -0,0 +1,102 @@ +# frozen_string_literal: true + +module Ephem + # Reads a binary PCK (+DAF/PCK+) orientation kernel: the orientation of one or + # more body frames over time, expressed as Euler angles. + class PCK + # Index of the data type within a PCK summary descriptor + # ([start, end, body, reference_frame, data_type, start_i, end_i]). + DATA_TYPE_IDENTIFIER = 4 + + attr_reader :daf, :segments + + # @param daf [Ephem::IO::DAF] DAF containing PCK data + # @raise [ArgumentError] if the DAF is nil + def initialize(daf:) + raise ArgumentError, "DAF cannot be nil" if daf.nil? + + @daf = daf + @segments = load_segments + @bodies = build_bodies + end + + # Opens a binary PCK file. + # + # @param path [String] Path to the PCK (+.bpc+) file + # @return [PCK] + # @raise [ArgumentError] if the file is not a binary PCK or cannot be read + def self.open(path) + daf = IO::DAF.new(File.open(path, "rb")) + unless daf.file_type == :pck + daf.close + raise ArgumentError, "#{path} is not a binary PCK (DAF/PCK) file" + end + + new(daf: daf) + rescue Errno::EACCES => e + raise ArgumentError, "File permission denied: #{path} (#{e.message})" + end + + # @return [void] + def close + @daf&.close + @segments&.each(&:clear_data) + end + + # Retrieves the orientation segment for a body frame. + # + # @param body [Integer] NAIF frame ID of the oriented body + # @return [Segments::OrientationSegment] + # @raise [KeyError] if no segment is found for the given body + def [](body) + @bodies.fetch(body) do + raise KeyError, "No orientation segment found for body: #{body}" + end + end + + # @return [String] the comments stored in the PCK file + def comments + @daf.comments + end + + # @yieldparam segment [Segments::OrientationSegment] + # @return [Enumerator] if no block is given + def each_segment(&block) + return enum_for(:each_segment) unless block_given? + + @segments.each(&block) + end + + # @return [String] a description of the PCK file and its segments + def to_s + <<~DESCRIPTION + PCK file with #{@segments.size} segments: + #{@segments.map(&:to_s).join("\n")} + DESCRIPTION + end + + private + + def load_segments + @daf.summaries.map do |source, descriptor| + build_segment(source: source, descriptor: descriptor) + end + end + + def build_bodies + @segments.group_by(&:body).transform_values do |segments| + segments.one? ? segments.first : Segments::OrientationGroup.new(segments) + end + end + + def build_segment(source:, descriptor:) + data_type = descriptor[DATA_TYPE_IDENTIFIER] + segment_class = Segments::Registry.lookup(:pck, data_type) + unless segment_class + raise UnsupportedError, "Unsupported PCK data type: #{data_type}" + end + + segment_class.new(daf: @daf, source: source, descriptor: descriptor) + end + end +end diff --git a/lib/ephem/segments/base_segment.rb b/lib/ephem/segments/base_segment.rb index a94442d..f47d3e8 100644 --- a/lib/ephem/segments/base_segment.rb +++ b/lib/ephem/segments/base_segment.rb @@ -38,6 +38,10 @@ class BaseSegment attr_reader :center # @return [String] the source of the segment attr_reader :source + # @return [Float] start of coverage as a Julian Date + attr_reader :start_jd + # @return [Float] end of coverage as a Julian Date + attr_reader :end_jd # Initialize a new segment # @@ -55,14 +59,7 @@ class BaseSegment def initialize(daf:, source:, descriptor:) @daf = daf @source = source - @start_second, - @end_second, - @target, - @center, - @frame, - @data_type, - @start_i, - @end_i = descriptor + parse_descriptor(descriptor) @start_jd = compute_julian_date(@start_second) @end_jd = compute_julian_date(@end_second) end @@ -97,6 +94,15 @@ def describe(verbose: false) DESCRIPTION end + # Whether the given time falls within this segment's coverage. + # + # @param tdb [Numeric] time in TDB Julian Date + # @param tdb2 [Numeric] optional fractional part of the TDB date + # @return [Boolean] + def covers?(tdb, tdb2 = 0.0) + (tdb + tdb2).between?(@start_jd, @end_jd) + end + def compute(_tdb, _tdb2 = 0.0) raise NotImplementedError, "#{self.class} has not implemented compute() for data type #{@data_type}" @@ -113,6 +119,17 @@ def clear_data private + def parse_descriptor(descriptor) + @start_second, + @end_second, + @target, + @center, + @frame, + @data_type, + @start_i, + @end_i = descriptor + end + def compute_julian_date(seconds) Time::J2000_EPOCH + seconds / Time::SECONDS_PER_DAY end diff --git a/lib/ephem/segments/chebyshev_type2.rb b/lib/ephem/segments/chebyshev_type2.rb new file mode 100644 index 0000000..578f0c9 --- /dev/null +++ b/lib/ephem/segments/chebyshev_type2.rb @@ -0,0 +1,147 @@ +# frozen_string_literal: true + +module Ephem + module Segments + # Shared evaluation machinery for DAF "type 2" Chebyshev segments. + module ChebyshevType2 + include Core::Constants + + # @return [void] + def clear_data + @data_lock.synchronize do + @data_loaded = false + @midpoints = nil + @radii = nil + @coefficients = nil + end + end + + private + + def load_data + @data_lock.synchronize do + return if @data_loaded + + process_coefficient_data(load_coefficient_data) + + @data_loaded = true + end + end + + def load_coefficient_data + metadata = @daf.read_array(@end_i - 3, @end_i) + _start_index, _end_index, record_size, segment_count = metadata + + coefficient_count = ((record_size - 2) / component_count).to_i + coefficients_raw = @daf.map_array(@start_i, @end_i - 4) + + [ + coefficients_raw, + record_size.to_i, + segment_count.to_i, + coefficient_count + ] + end + + def process_coefficient_data(data) + coefficients_raw, record_size, segment_count, coefficient_count = data + + coefficients = coefficients_raw.each_slice(record_size).to_a + + @midpoints = coefficients.map { |row| row[0] } + @radii = coefficients.map { |row| row[1] } + n_terms = coefficient_count + n_components = component_count + + @coefficients = Array.new(segment_count) do |i| + row = coefficients[i][2..] + Array.new(n_terms) do |k| + Array.new(n_components) do |j| + row[k + j * n_terms] + end + end + end + end + + def convert_to_seconds(tdb, tdb2) + case tdb + when Array + tdb.map { |t| time_to_seconds(t, tdb2) } + else + time_to_seconds(tdb, tdb2) + end + end + + def time_to_seconds(time, offset) + (time - Time::J2000_EPOCH + offset) * Time::SECONDS_PER_DAY + end + + def generate_position(tdb_seconds) + interval = find_interval(tdb_seconds) + normalized_time = compute_normalized_time(tdb_seconds, interval) + coeffs = @coefficients[interval] + Computation::ChebyshevPolynomial.evaluate(coeffs, normalized_time) + end + + def generate_single(tdb_seconds) + interval = find_interval(tdb_seconds) + normalized_time = compute_normalized_time(tdb_seconds, interval) + + coeffs = @coefficients[interval] # already [n_terms][3] + position = Computation::ChebyshevPolynomial.evaluate( + coeffs, + normalized_time + ) + velocity = Computation::ChebyshevPolynomial.evaluate_derivative( + coeffs, + normalized_time, + @radii[interval] + ) + [position, velocity] + end + + def generate_multiple(tdb_seconds) + tdb_seconds.map { |time| generate_single(time) } + end + + def find_interval(tdb_seconds) + left = 0 + right = @midpoints.size - 1 + + if @last_interval && time_in_interval?(tdb_seconds, @last_interval) + return @last_interval + end + + while left <= right + mid = (left + right) / 2 + min_time = @midpoints[mid] - @radii[mid] + max_time = @midpoints[mid] + @radii[mid] + + if tdb_seconds < min_time + right = mid - 1 + elsif tdb_seconds > max_time + left = mid + 1 + else + @last_interval = mid + return mid + end + end + + raise OutOfRangeError.new( + "Time #{tdb_seconds} is outside the coverage of this segment", + tdb_seconds + ) + end + + def time_in_interval?(time, interval) + min_time = @midpoints[interval] - @radii[interval] + max_time = @midpoints[interval] + @radii[interval] + time.between?(min_time, max_time) + end + + def compute_normalized_time(time_seconds, interval) + (time_seconds - @midpoints[interval]) / @radii[interval] + end + end + end +end diff --git a/lib/ephem/segments/orientation_group.rb b/lib/ephem/segments/orientation_group.rb new file mode 100644 index 0000000..fa5a0ec --- /dev/null +++ b/lib/ephem/segments/orientation_group.rb @@ -0,0 +1,45 @@ +# frozen_string_literal: true + +module Ephem + module Segments + # The orientation segments for one PCK body frame. Routes each query to the + # segment covering the requested time. Returned by PCK#[]. + # + # @see Ephem::Segments::OrientationSegment + class OrientationGroup < SegmentGroup + # @return [Integer] NAIF frame ID of the oriented body frame + def body + @segments.first.body + end + + # @return [Integer] NAIF ID of the inertial reference frame + def reference_frame + @segments.first.reference_frame + end + + # Euler angles at the given time, without rates. See + # {OrientationSegment#angles_at}. + # + # @param tdb [Numeric, Array] Time(s) in TDB Julian Date + # @param tdb2 [Numeric] Optional fractional part of TDB date + # @return [Core::Orientation, Array] + def angles_at(tdb, tdb2 = 0.0) + query(tdb, tdb2) do |segment, time, fraction| + segment.angles_at(time, fraction) + end + end + + # Euler angles and their rates at the given time. See + # {OrientationSegment#orientation_at}. + # + # @param tdb [Numeric, Array] Time(s) in TDB Julian Date + # @param tdb2 [Numeric] Optional fractional part of TDB date + # @return [Core::Orientation, Array] + def orientation_at(tdb, tdb2 = 0.0) + query(tdb, tdb2) do |segment, time, fraction| + segment.orientation_at(time, fraction) + end + end + end + end +end diff --git a/lib/ephem/segments/orientation_segment.rb b/lib/ephem/segments/orientation_segment.rb new file mode 100644 index 0000000..ae99f53 --- /dev/null +++ b/lib/ephem/segments/orientation_segment.rb @@ -0,0 +1,112 @@ +# frozen_string_literal: true + +module Ephem + module Segments + # Binary PCK orientation segment (data type 2): the orientation of a body + # frame relative to an inertial reference frame, stored as three Euler angles + # in Chebyshev coefficients. + class OrientationSegment < BaseSegment + include ChebyshevType2 + + COMPONENT_COUNT = 3 # phi, theta, psi + + def initialize(daf:, source:, descriptor:) + super + @data_loaded = false + @data_lock = Mutex.new + end + + # @return [Integer] NAIF frame ID of the oriented body frame + alias_method :body, :target + # @return [Integer] NAIF ID of the inertial reference frame + alias_method :reference_frame, :center + + # Euler angles at the given time, without rates. + # + # @param tdb [Numeric, Array] Time(s) in TDB Julian Date + # @param tdb2 [Numeric] Optional fractional part of TDB date + # @return [Core::Orientation, Array] angles in radians + # @raise [Ephem::OutOfRangeError] if time is outside segment coverage + def angles_at(tdb, tdb2 = 0.0) + load_data + tdb_seconds = convert_to_seconds(tdb, tdb2) + + case tdb_seconds + when Numeric + to_orientation(generate_position(tdb_seconds)) + else + tdb_seconds.map { |t| to_orientation(generate_position(t)) } + end + end + + # Euler angles and their rates at the given time. + # + # @param tdb [Numeric, Array] Time(s) in TDB Julian Date + # @param tdb2 [Numeric] Optional fractional part of TDB date + # @return [Core::Orientation, Array] angles (radians) + # carrying rates (radians/day) + # @raise [Ephem::OutOfRangeError] if time is outside segment coverage + def orientation_at(tdb, tdb2 = 0.0) + load_data + tdb_seconds = convert_to_seconds(tdb, tdb2) + + case tdb_seconds + when Numeric + to_orientation(*generate_single(tdb_seconds)) + else + generate_multiple(tdb_seconds).map do |angles, rates| + to_orientation(angles, rates) + end + end + end + + def compute(*) + raise NotImplementedError, + "Use #angles_at or #orientation_at for orientation segments" + end + + def compute_and_differentiate(*) + raise NotImplementedError, + "Use #orientation_at for orientation segments" + end + + def describe(verbose: false) + start_date = format_date(*julian_to_gregorian(@start_jd)) + end_date = format_date(*julian_to_gregorian(@end_jd)) + + description = + "#{start_date}..#{end_date} Type #{@data_type} orientation of " \ + "frame #{body} relative to frame #{reference_frame}" + return description unless verbose + + <<~DESCRIPTION.chomp + #{description} + source=#{@source} + DESCRIPTION + end + + private + + def parse_descriptor(descriptor) + @start_second, + @end_second, + @target, + @center, + @data_type, + @start_i, + @end_i = descriptor + @frame = @center + end + + def component_count + COMPONENT_COUNT + end + + def to_orientation(angles, rates = nil) + Core::Orientation.new(angles[0], angles[1], angles[2], rates: rates) + end + + Registry.register(:pck, 2, self) + end + end +end diff --git a/lib/ephem/segments/position_group.rb b/lib/ephem/segments/position_group.rb new file mode 100644 index 0000000..fd7d29d --- /dev/null +++ b/lib/ephem/segments/position_group.rb @@ -0,0 +1,46 @@ +# frozen_string_literal: true + +module Ephem + module Segments + # The position segments for one SPK center/target pair. Routes each query to + # the segment covering the requested time. Returned by SPK#[]. + # + # @see Ephem::Segments::Segment + class PositionGroup < SegmentGroup + # @return [Integer] the center body ID + def center + @segments.first.center + end + + # @return [Integer] the target body ID + def target + @segments.first.target + end + + # Position at the given time. See {Segment#compute}. + # + # @param tdb [Numeric, Array] Time(s) in TDB Julian Date + # @param tdb2 [Numeric] Optional fractional part of TDB date + # @return [Core::Vector, Array] + def compute(tdb, tdb2 = 0.0) + query(tdb, tdb2) do |segment, time, fraction| + segment.compute(time, fraction) + end + end + alias_method :position_at, :compute + + # Position and velocity at the given time. See + # {Segment#compute_and_differentiate}. + # + # @param tdb [Numeric, Array] Time(s) in TDB Julian Date + # @param tdb2 [Numeric] Optional fractional part of TDB date + # @return [Core::State, Array] + def compute_and_differentiate(tdb, tdb2 = 0.0) + query(tdb, tdb2) do |segment, time, fraction| + segment.compute_and_differentiate(time, fraction) + end + end + alias_method :state_at, :compute_and_differentiate + end + end +end diff --git a/lib/ephem/segments/registry.rb b/lib/ephem/segments/registry.rb index ff21304..21d6e29 100644 --- a/lib/ephem/segments/registry.rb +++ b/lib/ephem/segments/registry.rb @@ -2,9 +2,15 @@ module Ephem module Segments - class Registry - def self.register(type, klass) - SPK::SEGMENT_CLASSES[type] = klass + module Registry + TABLES = {spk: {}, pck: {}}.freeze + + def self.register(kind, type, klass) + TABLES.fetch(kind)[type] = klass + end + + def self.lookup(kind, type, default = nil) + TABLES.fetch(kind).fetch(type, default) end end end diff --git a/lib/ephem/segments/segment.rb b/lib/ephem/segments/segment.rb index ff1db3b..c629d7b 100644 --- a/lib/ephem/segments/segment.rb +++ b/lib/ephem/segments/segment.rb @@ -2,18 +2,9 @@ module Ephem module Segments - # Manages data segments within SPICE kernel (SPK) files, providing methods - # to compute positions and velocities of celestial bodies using Chebyshev - # polynomial approximations. - # - # Each segment contains data for a specific celestial body (target) relative - # to another body (center) within a specific time range. The data is stored - # as Chebyshev polynomial coefficients that can be evaluated to obtain - # position and velocity vectors. - # - # The class provides thread-safe data loading and caching mechanisms to - # optimize performance while ensuring data consistency in multithreaded - # environments. + # SPK trajectory segment: position (type 2) and position/velocity (type 3) + # of a target body relative to a center body, stored as Chebyshev + # coefficients. # # @example Computing position at a specific time # segment = Ephem::Segments::Segment.new( @@ -25,29 +16,18 @@ module Segments # # @example Computing position and velocity # state = segment.compute_and_differentiate(time) # returns State - # position = state.position # Vector - # velocity = state.velocity # Vector # # @see Ephem::Core::Vector # @see Ephem::Core::State - # @see Ephem::Computation::ChebyshevPolynomial + # @see Ephem::Segments::ChebyshevType2 class Segment < BaseSegment + include ChebyshevType2 + COMPONENT_COUNTS = { 2 => 3, # Type 2: position (x, y, z) 3 => 6 # Type 3: position (x, y, z) and velocity (vx, vy, vz) }.freeze - # @param daf [Ephem::IO::DAF] DAF file object containing the segment data - # @param source [String] Name of the source SPK file - # @param descriptor [Array] Array containing segment metadata: - # - start_second [Float] Start time in seconds from J2000 - # - end_second [Float] End time in seconds from J2000 - # - target [Integer] NAIF ID of target body - # - center [Integer] NAIF ID of center body - # - frame [Integer] Reference frame ID - # - data_type [Integer] Type of data (2 for position, 3 for pos/vel) - # - start_i [Integer] Start index in DAF array - # - end_i [Integer] End index in DAF array def initialize(daf:, source:, descriptor:) super @data_loaded = false @@ -57,17 +37,10 @@ def initialize(daf:, source:, descriptor:) # Computes the position of the target body relative to the center body at # the specified time. # - # Uses Chebyshev polynomial approximation to interpolate the position from - # stored coefficients. The computation is thread-safe and uses cached data - # when available. - # # @param tdb [Numeric, Array] Time(s) in TDB Julian Date # @param tdb2 [Numeric] Optional fractional part of TDB date # @return [Ephem::Core::Vector] Position vector in kilometers # @raise [Ephem::OutOfRangeError] if time is outside segment coverage - # - # @example Computing Earth's position relative to Solar System Barycenter - # position = segment.compute(2451545.0) # J2000 epoch def compute(tdb, tdb2 = 0.0) load_data tdb_seconds = convert_to_seconds(tdb, tdb2) @@ -87,21 +60,12 @@ def compute(tdb, tdb2 = 0.0) # Computes both position and velocity vectors at the specified time. # - # Uses Chebyshev polynomial approximation and its derivative to compute - # both position and velocity. The computation is thread-safe and uses - # cached data when available. - # # @param tdb [Numeric, Array] Time(s) in TDB Julian Date # @param tdb2 [Numeric] Optional fractional part of TDB date # @return [Ephem::Core::State, Array] State object(s) - # containing position and velocity vectors. Returns array if input is - # array. + # containing position (km) and velocity (km/day) vectors. Returns an + # array if the input is an array. # @raise [Ephem::OutOfRangeError] if time is outside segment coverage - # - # @example Computing Earth's state vector - # state = segment.compute_and_differentiate(2451545.0) - # position = state.position # in kilometers - # velocity = state.velocity # in kilometers/second def compute_and_differentiate(tdb, tdb2 = 0.0) load_data tdb_seconds = convert_to_seconds(tdb, tdb2) @@ -124,186 +88,16 @@ def compute_and_differentiate(tdb, tdb2 = 0.0) end alias_method :state_at, :compute_and_differentiate - # Clears cached coefficient data, forcing reload on next computation. - # - # This method is thread-safe and can be used to free memory or force - # fresh data loading if needed. - # - # @return [void] - def clear_data - @data_lock.synchronize do - @data_loaded = false - @midpoints = nil - @radii = nil - @coefficients = nil - end - end - private - def load_data - # Synchronize access to data loading using a mutex lock - # to prevent race conditions in multithreaded environments - @data_lock.synchronize do - return if @data_loaded - - component_count = determine_component_count - coefficients_data = load_coefficient_data - process_coefficient_data(coefficients_data, component_count) - - @data_loaded = true - end - end - - def determine_component_count + def component_count COMPONENT_COUNTS.fetch(@data_type) do raise "Unsupported data type: #{@data_type}" end end - def load_coefficient_data - # Read metadata from the end of the segment - # start_index: index of first coefficient in segment - # end_index: index of last coefficient in segment - # record_size: total size of each record (coefficients + 2) - # segment_count: number of records in the segment - metadata = @daf.read_array(@end_i - 3, @end_i) - _start_index, _end_index, record_size, segment_count = metadata - - coefficient_count = ((record_size - 2) / determine_component_count).to_i - coefficients_raw = @daf.map_array(@start_i, @end_i - 4) - - [ - coefficients_raw, - record_size.to_i, - segment_count.to_i, - coefficient_count - ] - end - - def process_coefficient_data(data, component_count) - coefficients_raw, record_size, segment_count, coefficient_count = data - - coefficients = coefficients_raw.each_slice(record_size).to_a - - @midpoints = coefficients.map { |row| row[0] } - @radii = coefficients.map { |row| row[1] } - n_terms = coefficient_count - n_components = component_count - - @coefficients = Array.new(segment_count) do |i| - row = coefficients[i][2..] - Array.new(n_terms) do |k| - Array.new(n_components) do |j| - row[k + j * n_terms] - end - end - end - end - - def convert_to_seconds(tdb, tdb2) - case tdb - when Array - tdb.map { |t| time_to_seconds(t, tdb2) } - else - time_to_seconds(tdb, tdb2) - end - end - - def time_to_seconds(time, offset) - (time - Time::J2000_EPOCH + offset) * Time::SECONDS_PER_DAY - end - - def generate(tdb, tdb2) - load_data - tdb_seconds = convert_to_seconds(tdb, tdb2) - - case tdb_seconds - when Numeric - generate_single(tdb_seconds) - else - generate_multiple(tdb_seconds) - end - end - - def generate_position(tdb_seconds) - interval = find_interval(tdb_seconds) - normalized_time = compute_normalized_time(tdb_seconds, interval) - coeffs = @coefficients[interval] - Computation::ChebyshevPolynomial.evaluate(coeffs, normalized_time) - end - - def generate_single(tdb_seconds) - interval = find_interval(tdb_seconds) - normalized_time = compute_normalized_time(tdb_seconds, interval) - - coeffs = @coefficients[interval] # already [n_terms][3] - position = Computation::ChebyshevPolynomial.evaluate( - coeffs, - normalized_time - ) - velocity = Computation::ChebyshevPolynomial.evaluate_derivative( - coeffs, - normalized_time, - @radii[interval] - ) - [position, velocity] - end - - def generate_multiple(tdb_seconds) - positions = [] - velocities = [] - - tdb_seconds.each do |time| - pos, vel = generate_single(time) - positions << pos - velocities << vel - end - - [positions, velocities] - end - - def find_interval(tdb_seconds) - left = 0 - right = @midpoints.size - 1 - - if @last_interval && time_in_interval?(tdb_seconds, @last_interval) - return @last_interval - end - - while left <= right - mid = (left + right) / 2 - min_time = @midpoints[mid] - @radii[mid] - max_time = @midpoints[mid] + @radii[mid] - - if tdb_seconds < min_time - right = mid - 1 - elsif tdb_seconds > max_time - left = mid + 1 - else - @last_interval = mid - return mid - end - end - - raise OutOfRangeError.new( - "Time #{tdb_seconds} is outside the coverage of this segment", - tdb_seconds - ) - end - - def time_in_interval?(time, interval) - min_time = @midpoints[interval] - @radii[interval] - max_time = @midpoints[interval] + @radii[interval] - time.between?(min_time, max_time) - end - - def compute_normalized_time(time_seconds, interval) - (time_seconds - @midpoints[interval]) / @radii[interval] - end - - Registry.register(2, self) - Registry.register(3, self) + Registry.register(:spk, 2, self) + Registry.register(:spk, 3, self) end end end diff --git a/lib/ephem/segments/segment_group.rb b/lib/ephem/segments/segment_group.rb new file mode 100644 index 0000000..2549ad5 --- /dev/null +++ b/lib/ephem/segments/segment_group.rb @@ -0,0 +1,74 @@ +# frozen_string_literal: true + +module Ephem + module Segments + # Several segments that share the same key (an SPK center/target pair, or a + # PCK body) but cover different, contiguous time intervals. Each query is + # routed to the segment covering the requested time, so a body that a kernel + # splits across several intervals behaves as a single, continuous source. + # + # SPK and PCK only build a group when a key actually has more than one + # segment; the common single-segment case returns the bare segment, so this + # routing never sits in the hot path for it. + # + # Subclasses ({PositionGroup}, {OrientationGroup}) add the query methods + # appropriate to the segments they hold. + class SegmentGroup + # @return [Array] the underlying segments + attr_reader :segments + + # @param segments [Array] segments sharing the same key + def initialize(segments) + @segments = segments + end + + # Clears cached data for every segment in the group. + # + # @return [void] + def clear_data + @segments.each(&:clear_data) + end + + def to_s + @segments.map(&:to_s).join("\n") + end + + private + + # Routes a query to the covering segment(s) and assembles the result. For + # a scalar time the block is called once with that segment and time; for + # an array, times are grouped by covering segment so each is queried in a + # single batched call, then results are reassembled in input order. + def query(tdb, tdb2) + if tdb.is_a?(Array) + query_many(tdb, tdb2) { |segment, times| yield segment, times, tdb2 } + else + yield segment_for(tdb, tdb2), tdb, tdb2 + end + end + + def query_many(times, tdb2) + results = Array.new(times.size) + indices_by_segment = times.each_index.group_by do |index| + segment_for(times[index], tdb2) + end + + indices_by_segment.each do |segment, indices| + segment_results = yield(segment, indices.map { |index| times[index] }) + indices.each_with_index do |original_index, position| + results[original_index] = segment_results[position] + end + end + + results + end + + def segment_for(tdb, tdb2) + @segments.find { |segment| segment.covers?(tdb, tdb2) } || + raise(OutOfRangeError.new( + "Time #{tdb} is outside the coverage of this group", tdb + )) + end + end + end +end diff --git a/lib/ephem/spk.rb b/lib/ephem/spk.rb index 8a89d46..c07d645 100644 --- a/lib/ephem/spk.rb +++ b/lib/ephem/spk.rb @@ -25,7 +25,6 @@ class SPK DE_FILENAME = "NIO2SPK" DATA_TYPE_IDENTIFIER = 5 - SEGMENT_CLASSES = {} attr_reader :daf, :segments, :pairs @@ -49,6 +48,11 @@ def initialize(daf:) # @raise [ArgumentError] If the file cannot be accessed due to permissions def self.open(path) daf = IO::DAF.new(File.open(path, "rb")) + if daf.file_type == :pck + daf.close + raise ArgumentError, "#{path} is a binary PCK file, use Ephem::PCK.open" + end + new(daf: daf) rescue Errno::EACCES => e raise ArgumentError, "File permission denied: #{path} (#{e.message})" @@ -77,8 +81,8 @@ def to_s # # @param center [Integer] NAIF ID of the center body # @param target [Integer] NAIF ID of the target body - # @return [Segments::BaseSegment] The segment containing data for the - # specified bodies + # @return [Segments::PositionGroup] The position segment(s) for the + # specified bodies, routing each query to the segment covering the requested time # @raise [KeyError] If no segment is found for the given center-target pair def [](center, target) @pairs.fetch([center, target]) do @@ -139,14 +143,20 @@ def load_segments end def build_pairs - @segments.to_h do |segment| - [[segment.center, segment.target], segment] - end + @segments + .group_by { |segment| [segment.center, segment.target] } + .transform_values do |segments| + segments.one? ? segments.first : Segments::PositionGroup.new(segments) + end end def build_segment(source:, descriptor:) data_type = descriptor[DATA_TYPE_IDENTIFIER] - segment_class = SEGMENT_CLASSES.fetch(data_type, Segments::BaseSegment) + segment_class = Segments::Registry.lookup( + :spk, + data_type, + Segments::BaseSegment + ) segment_class.new(daf: @daf, source: source, descriptor: descriptor) end end diff --git a/lib/ephem/tasks/validate_accuracy.rb b/lib/ephem/tasks/validate_accuracy.rb index d137864..af25702 100644 --- a/lib/ephem/tasks/validate_accuracy.rb +++ b/lib/ephem/tasks/validate_accuracy.rb @@ -128,7 +128,7 @@ def max_errors_output pos = @max_errors.slice(:dx, :dy, :dz) vel = @max_errors.slice(:dvx, :dvy, :dvz) "Max position errors (km): #{pos.map { |k, v| "#{k}=#{v}" }.join(", ")}\n" \ - "Max velocity errors (km/s): #{vel.map { |k, v| "#{k}=#{v}" }.join(", ")}" + "Max velocity errors (km/day): #{vel.map { |k, v| "#{k}=#{v}" }.join(", ")}" end end end diff --git a/spec/ephem/core/orientation_spec.rb b/spec/ephem/core/orientation_spec.rb new file mode 100644 index 0000000..bc820ce --- /dev/null +++ b/spec/ephem/core/orientation_spec.rb @@ -0,0 +1,93 @@ +# frozen_string_literal: true + +RSpec.describe Ephem::Core::Orientation do + describe ".new" do + it "exposes the three Euler angles" do + orientation = described_class.new(1.0, 2.0, 3.0) + + expect(orientation.phi).to eq(1.0) + expect(orientation.theta).to eq(2.0) + expect(orientation.psi).to eq(3.0) + end + + it "carries no rates by default" do + orientation = described_class.new(1.0, 2.0, 3.0) + + expect(orientation.rates).to be_nil + expect(orientation.rates?).to be(false) + end + + it "carries rates when given" do + orientation = described_class.new(1.0, 2.0, 3.0, rates: [0.1, 0.2, 0.3]) + + expect(orientation.rates).to eq([0.1, 0.2, 0.3]) + expect(orientation.rates?).to be(true) + end + + it "is frozen" do + expect(described_class.new(1.0, 2.0, 3.0)).to be_frozen + end + + it "raises for non-numeric angles" do + expect { described_class.new(1.0, "x", 3.0) }.to raise_error( + Ephem::InvalidInputError, "Orientation angles must be numeric" + ) + end + + it "raises for malformed rates" do + expect { described_class.new(1.0, 2.0, 3.0, rates: [0.1, 0.2]) } + .to raise_error( + Ephem::InvalidInputError, "Orientation rates must be three numerics" + ) + end + end + + describe "#[] and #to_a" do + it "indexes angles and converts to an array" do + orientation = described_class.new(1.0, 2.0, 3.0) + + expect(orientation.to_a).to eq([1.0, 2.0, 3.0]) + expect(orientation[0]).to eq(1.0) + expect(orientation[2]).to eq(3.0) + end + + it "raises for an invalid index" do + expect { described_class.new(1.0, 2.0, 3.0)[3] } + .to raise_error(Ephem::IndexError) + end + end + + describe "#==" do + it "compares angles and rates" do + with_rates = described_class.new(1.0, 2.0, 3.0, rates: [0.1, 0.2, 0.3]) + same_with_rates = described_class.new( + 1.0, + 2.0, + 3.0, + rates: [0.1, 0.2, 0.3] + ) + without_rates = described_class.new(1.0, 2.0, 3.0) + + expect(with_rates).to eq(same_with_rates) + expect(with_rates).not_to eq(without_rates) + end + + it "raises when compared with a non-Orientation" do + expect { described_class.new(1.0, 2.0, 3.0) == 5 } + .to raise_error(Ephem::InvalidInputError) + end + end + + describe "#inspect" do + it "renders angles, and rates when present" do + angles_only = described_class.new(1.0, 2.0, 3.0) + with_rates = described_class.new(1.0, 2.0, 3.0, rates: [0.1, 0.2, 0.3]) + + expect(angles_only.inspect) + .to eq("Orientation[phi: 1.0, theta: 2.0, psi: 3.0]") + expect(with_rates.inspect).to eq( + "Orientation[phi: 1.0, theta: 2.0, psi: 3.0, rates: [0.1, 0.2, 0.3]]" + ) + end + end +end diff --git a/spec/ephem/core/rotation_spec.rb b/spec/ephem/core/rotation_spec.rb new file mode 100644 index 0000000..c31d0a6 --- /dev/null +++ b/spec/ephem/core/rotation_spec.rb @@ -0,0 +1,104 @@ +# frozen_string_literal: true + +RSpec.describe Ephem::Core::Rotation do + describe ".about_x / .about_y / .about_z" do + it "rotates coordinates about the Z axis (passive convention)" do + rotation = described_class.about_z(half_pi) + rotated = described_class.apply( + rotation, + Ephem::Core::Vector.new(1.0, 0.0, 0.0) + ) + + expect(rotated.x).to be_within(1e-12).of(0.0) + expect(rotated.y).to be_within(1e-12).of(-1.0) + expect(rotated.z).to be_within(1e-12).of(0.0) + end + + it "rotates coordinates about the X axis (passive convention)" do + rotation = described_class.about_x(half_pi) + rotated = described_class.apply( + rotation, + Ephem::Core::Vector.new(0.0, 1.0, 0.0) + ) + + expect(rotated.to_a.map { |value| value.round(12) }) + .to eq([0.0, 0.0, -1.0]) + end + + it "rotates coordinates about the Y axis (passive convention)" do + rotation = described_class.about_y(half_pi) + rotated = described_class.apply( + rotation, + Ephem::Core::Vector.new(1.0, 0.0, 0.0) + ) + + expect(rotated.to_a.map { |value| value.round(12) }) + .to eq([0.0, 0.0, 1.0]) + end + + it "returns the identity for a zero angle" do + expect(described_class.about_z(0.0)).to eq( + [[1.0, 0.0, 0.0], [0.0, 1.0, 0.0], [0.0, 0.0, 1.0]] + ) + end + end + + describe ".multiply" do + it "composes rotations as standard matrix multiplication" do + composed = described_class.multiply( + described_class.about_z(2.5), + described_class.about_x(0.4), + described_class.about_z(1.2) + ) + + # An orthonormal rotation: composed * composed^T == identity + product = described_class.multiply(composed, composed.transpose) + identity = [[1.0, 0.0, 0.0], [0.0, 1.0, 0.0], [0.0, 0.0, 1.0]] + product.each_with_index do |row, row_index| + row.each_with_index do |value, column_index| + expect(value) + .to be_within(1e-12).of(identity[row_index][column_index]) + end + end + end + + it "is associative across the supplied factors" do + left = described_class.about_x(0.3) + middle = described_class.about_y(0.7) + right = described_class.about_z(1.1) + + all_at_once = described_class.multiply(left, middle, right) + pairwise = described_class.multiply( + described_class.multiply(left, middle), right + ) + + all_at_once.flatten.zip(pairwise.flatten).each do |combined, stepwise| + expect(combined).to be_within(1e-12).of(stepwise) + end + end + end + + describe ".apply" do + it "returns a Core::Vector" do + identity = described_class.about_z(0.0) + result = described_class.apply( + identity, + Ephem::Core::Vector.new(4.0, 5.0, 6.0) + ) + + expect(result).to be_a(Ephem::Core::Vector) + expect(result.to_a).to eq([4.0, 5.0, 6.0]) + end + + it "accepts a plain array as the vector" do + identity = described_class.about_z(0.0) + result = described_class.apply(identity, [7.0, 8.0, 9.0]) + + expect(result.to_a).to eq([7.0, 8.0, 9.0]) + end + end + + def half_pi + Math::PI / 2 + end +end diff --git a/spec/ephem/download_spec.rb b/spec/ephem/download_spec.rb index 9b2f1bf..eead576 100644 --- a/spec/ephem/download_spec.rb +++ b/spec/ephem/download_spec.rb @@ -32,6 +32,37 @@ end end + context "when downloading a NAIF binary PCK kernel" do + it "downloads and writes the PCK kernel file from NAIF" do + name = "moon_pa_de440_200625.bpc" + target_path = "tmp/kernel.bpc" + mock_content = "binary-pck-data" + file_io = StringIO.new + pathname_double = instance_double(Pathname, dirname: "tmp") + http_response = instance_double(Net::HTTPResponse) + allow(Pathname).to receive(:new) + .with(target_path) + .and_return(pathname_double) + allow(pathname_double).to receive(:open) + .with("wb") + .and_yield(file_io) + .once + naif_uri = URI.join(described_class::NAIF_PCK_BASE_URL, name) + allow(Net::HTTP).to receive(:start) + .with(naif_uri.host, naif_uri.port, use_ssl: true) + .and_yield( + double(request: nil).tap do |http| + allow(http).to receive(:request).and_yield(http_response) + end + ) + allow(http_response).to receive(:read_body).and_yield(mock_content) + + described_class.call(name: name, target: target_path) + + expect(file_io.string).to eq(mock_content) + end + end + context "when downloading an IMCCE kernel" do it "downloads, extracts, and writes the IMCCE kernel file" do name = "inpop19a.bsp" diff --git a/spec/ephem/io/daf_spec.rb b/spec/ephem/io/daf_spec.rb new file mode 100644 index 0000000..88473d8 --- /dev/null +++ b/spec/ephem/io/daf_spec.rb @@ -0,0 +1,32 @@ +# frozen_string_literal: true + +RSpec.describe Ephem::IO::DAF do + include TestSpkHelper + + describe "#file_type" do + it "identifies a DAF/SPK kernel" do + daf = described_class.new(File.open(test_spk, "rb")) + + expect(daf.file_type).to eq(:spk) + + daf.close + end + + it "identifies a binary DAF/PCK kernel" do + daf = described_class.new(File.open(moon_pa_de440_excerpt, "rb")) + + expect(daf.file_type).to eq(:pck) + + daf.close + end + + it "falls back to the integer count for a legacy NAIF/DAF SPK" do + daf = described_class.new(File.open(de405_2000_excerpt, "rb")) + + expect(daf.record_data.locator_identifier).to eq("NAIF/DAF") + expect(daf.file_type).to eq(:spk) + + daf.close + end + end +end diff --git a/spec/ephem/pck_spec.rb b/spec/ephem/pck_spec.rb new file mode 100644 index 0000000..db07246 --- /dev/null +++ b/spec/ephem/pck_spec.rb @@ -0,0 +1,109 @@ +# frozen_string_literal: true + +RSpec.describe Ephem::PCK do + include TestSpkHelper + + describe ".open" do + it "opens a binary PCK file" do + pck = described_class.open(moon_pa_de440_excerpt) + + expect(pck).to be_a(described_class) + expect(pck.daf.file_type).to eq(:pck) + + pck.close + end + + it "rejects an SPK file" do + expect { described_class.open(test_spk) }.to raise_error( + ArgumentError, /not a binary PCK/ + ) + end + end + + describe "#[]" do + it "returns the orientation source for a body frame" do + pck = described_class.open(moon_pa_de440_excerpt) + + source = pck[31008] + expect(source.body).to eq(31008) + expect(source.reference_frame).to eq(1) + + pck.close + end + + it "raises KeyError for an unknown body" do + pck = described_class.open(moon_pa_de440_excerpt) + + expect { pck[42] }.to raise_error( + KeyError, /No orientation segment found for body: 42/ + ) + + pck.close + end + end + + describe "#to_s" do + it "describes the file and its segments" do + pck = described_class.open(moon_pa_de440_excerpt) + + expect(pck.to_s).to include("PCK file with 1 segments") + expect(pck.to_s).to include("orientation of frame 31008") + + pck.close + end + end + + describe "data type support" do + it "raises UnsupportedError for a non type-2 segment" do + descriptor = [0.0, 1.0, 31008, 1, 3, 1, 100] + daf = instance_double(Ephem::IO::DAF) + allow(daf).to receive(:summaries).and_return([["src", descriptor]]) + + expect { described_class.new(daf: daf) }.to raise_error( + Ephem::UnsupportedError, /Unsupported PCK data type: 3/ + ) + end + end + + describe "accuracy against jplephem (MOON_PA_DE440)" do + it "matches reference Euler angles and rates" do + pck = described_class.open(moon_pa_de440_excerpt) + source = pck[31008] + + reference_orientations.each do |reference| + orientation = source.orientation_at(reference[:jd]) + + orientation.to_a.zip(reference[:angles]).each do |actual, expected| + expect(actual).to be_within(1e-9).of(expected) + end + orientation.rates.zip(reference[:rates]).each do |actual, expected| + expect(actual).to be_within(1e-9).of(expected) + end + end + + pck.close + end + end + + # Ground truth from jplephem 2.24 reading moon_pa_de440_200625.bpc. + # Rates converted to ephem's per-day convention (jplephem returns per second). + def reference_orientations + [ + { + jd: 2451045.0, + angles: [-0.0310089214024731, 0.432874655509576, 2449.25118158446], + rates: [-5.27075482126779e-05, 7.60544162825503e-06, 0.230015478199546] + }, + { + jd: 2451545.0, + angles: [-0.0541470580870196, 0.424855460999069, 2564.25827272151], + rates: [-0.000117018175276388, 4.51324219231248e-05, 0.230100034112187] + }, + { + jd: 2452045.0, + angles: [-0.0683791305700164, 0.413710101076473, 2679.25713036353], + rates: [-0.000132116376724321, 0.000171517329456927, 0.230098834913826] + } + ] + end +end diff --git a/spec/ephem/segments/orientation_segment_spec.rb b/spec/ephem/segments/orientation_segment_spec.rb new file mode 100644 index 0000000..72bbf95 --- /dev/null +++ b/spec/ephem/segments/orientation_segment_spec.rb @@ -0,0 +1,128 @@ +# frozen_string_literal: true + +RSpec.describe Ephem::Segments::OrientationSegment do + describe "#angles_at" do + it "returns an Orientation of the three Euler angles" do + segment = create_segment_with_data + time = Ephem::Core::Constants::Time::J2000_EPOCH + + orientation = segment.angles_at(time) + + expect(orientation).to be_a(Ephem::Core::Orientation) + expect(orientation.phi).to be_within(1e-12).of(1.0) + expect(orientation.theta).to be_within(1e-12).of(2.0) + expect(orientation.psi).to be_within(1e-12).of(3.0) + end + + it "carries no rates" do + segment = create_segment_with_data + time = Ephem::Core::Constants::Time::J2000_EPOCH + + expect(segment.angles_at(time).rates?).to be(false) + end + + it "returns an Orientation per time for an array input" do + segment = create_segment_with_data + time = Ephem::Core::Constants::Time::J2000_EPOCH + + orientations = segment.angles_at([time, time + (15.0 / 86400.0)]) + + expect(orientations.length).to eq(2) + expect(orientations).to all(be_a(Ephem::Core::Orientation)) + end + + it "raises OutOfRangeError outside the coverage" do + segment = create_segment_with_data + early = Ephem::Core::Constants::Time::J2000_EPOCH - 1.0 + + expect { segment.angles_at(early) } + .to raise_error(Ephem::OutOfRangeError) + end + end + + describe "#orientation_at" do + it "returns an Orientation carrying rates" do + segment = create_segment_with_data + time = Ephem::Core::Constants::Time::J2000_EPOCH + + orientation = segment.orientation_at(time) + + expect(orientation.rates?).to be(true) + expect(orientation.rates.length).to eq(3) + end + end + + describe "#body and #reference_frame" do + it "expose the oriented frame and the reference frame" do + segment = create_segment_with_data + + expect(segment.body).to eq(31008) + expect(segment.reference_frame).to eq(1) + end + end + + describe "#describe" do + it "describes the orientation by frame IDs" do + segment = create_segment_with_data + + expect(segment.describe).to include( + "Type 2 orientation of frame 31008 relative to frame 1" + ) + end + end + + describe "#compute" do + it "directs callers to the orientation methods" do + segment = create_segment_with_data + + expect { segment.compute(0.0) }.to raise_error( + NotImplementedError, /angles_at or #orientation_at/ + ) + expect { segment.compute_and_differentiate(0.0) }.to raise_error( + NotImplementedError, /orientation_at/ + ) + end + end + + def create_mock_daf + daf = instance_double(Ephem::IO::DAF) + + allow(daf).to receive(:read_array) do |start_word, end_word| + if end_word >= 97 + [1, 96, 11, 1] + else + [ + 0.0, # midpoint (seconds from J2000) + 43200.0, # radius (half day in seconds) + 1.0, 0.05, 0.0, # phi coefficients + 2.0, 0.1, 0.0, # theta coefficients + 3.0, 0.15, 0.0 # psi coefficients + ][(start_word - 1)..(end_word - 1)] + end + end + + allow(daf).to receive(:map_array) do |start_word, end_word| + daf.read_array(start_word, end_word) + end + + daf + end + + def create_segment_with_data + descriptor = [ + 0.0, # start_second + 86400.0, # end_second + 31008, # body (MOON_PA_DE440 frame) + 1, # reference_frame (J2000) + 2, # data_type + 1, # start_i + 100 # end_i + ] + + described_class.new( + daf: create_mock_daf, + source: "moon_pa_de440.bpc", + descriptor: descriptor + ) + end +end diff --git a/spec/ephem/segments/segment_group_spec.rb b/spec/ephem/segments/segment_group_spec.rb new file mode 100644 index 0000000..931e73a --- /dev/null +++ b/spec/ephem/segments/segment_group_spec.rb @@ -0,0 +1,99 @@ +# frozen_string_literal: true + +RSpec.describe Ephem::Segments::PositionGroup do + describe "#compute" do + it "routes a scalar time to the covering segment" do + early = build_position_segment(covers: 0.0..99.0) + late = build_position_segment(covers: 100.0..200.0) + allow(late).to receive(:compute).with(150.0, 0.0).and_return(:late) + group = described_class.new([early, late]) + + expect(group.compute(150.0)).to eq(:late) + end + + it "routes each time of an array to its segment, in order" do + early = build_position_segment(covers: 0.0..99.0) + late = build_position_segment(covers: 100.0..200.0) + allow(early).to receive(:compute).with([10.0], 0.0).and_return([:a]) + allow(late).to receive(:compute).with([150.0], 0.0).and_return([:b]) + group = described_class.new([early, late]) + + expect(group.compute([10.0, 150.0])).to eq([:a, :b]) + end + + it "raises OutOfRangeError when no segment covers the time" do + segment = build_position_segment(covers: 0.0..1.0) + group = described_class.new([segment]) + + expect { group.compute(150.0) } + .to raise_error(Ephem::OutOfRangeError) + end + end + + describe "#center and #target" do + it "delegate to the first segment" do + segment = build_position_segment(covers: 0.0..1.0) + group = described_class.new([segment]) + + expect(group.center).to eq(0) + expect(group.target).to eq(301) + end + end + + describe "#clear_data" do + it "clears data on every segment" do + first = build_position_segment(covers: 0.0..1.0) + second = build_position_segment(covers: 0.0..1.0) + group = described_class.new([first, second]) + + expect(first).to receive(:clear_data) + expect(second).to receive(:clear_data) + + group.clear_data + end + end + + def build_position_segment(covers:) + segment = instance_double( + Ephem::Segments::Segment, + center: 0, + target: 301 + ) + allow(segment).to receive(:covers?) { |time| covers.cover?(time) } + allow(segment).to receive(:clear_data) + segment + end +end + +RSpec.describe Ephem::Segments::OrientationGroup do + describe "#angles_at" do + it "routes to the covering segment" do + early = build_orientation_segment(covers: 0.0..99.0) + late = build_orientation_segment(covers: 100.0..200.0) + allow(early).to receive(:angles_at).with(10.0, 0.0).and_return(:a) + group = described_class.new([early, late]) + + expect(group.angles_at(10.0)).to eq(:a) + end + end + + describe "#body and #reference_frame" do + it "delegate to the first segment" do + segment = build_orientation_segment(covers: 0.0..1.0) + group = described_class.new([segment]) + + expect(group.body).to eq(31008) + expect(group.reference_frame).to eq(1) + end + end + + def build_orientation_segment(covers:) + segment = instance_double( + Ephem::Segments::OrientationSegment, + body: 31008, + reference_frame: 1 + ) + allow(segment).to receive(:covers?) { |time| covers.cover?(time) } + segment + end +end diff --git a/spec/ephem/segments/segment_spec.rb b/spec/ephem/segments/segment_spec.rb index 253b3cc..3161a35 100644 --- a/spec/ephem/segments/segment_spec.rb +++ b/spec/ephem/segments/segment_spec.rb @@ -78,6 +78,20 @@ expect(result.velocity).to be_a(Ephem::Core::Vector) end end + + it "pairs each time with its own position and velocity" do + first_time = Ephem::Core::Constants::Time::J2000_EPOCH + second_time = first_time + (15.0 / 86400.0) + segment = create_segment_with_data + + array_results = + segment.compute_and_differentiate([first_time, second_time]) + first_scalar = segment.compute_and_differentiate(first_time) + second_scalar = segment.compute_and_differentiate(second_time) + + expect(array_results[0].to_arrays).to eq(first_scalar.to_arrays) + expect(array_results[1].to_arrays).to eq(second_scalar.to_arrays) + end end describe "#describe" do diff --git a/spec/ephem/spk_spec.rb b/spec/ephem/spk_spec.rb index 8f83ff3..dbfd4b6 100644 --- a/spec/ephem/spk_spec.rb +++ b/spec/ephem/spk_spec.rb @@ -18,11 +18,19 @@ allow(daf_double).to receive(:summaries) .and_return([]) + allow(daf_double).to receive(:file_type) + .and_return(:spk) spk = described_class.open("spk_file.bsp") expect(spk).to be_an_instance_of(described_class) end + + it "rejects a binary PCK file" do + expect { described_class.open(moon_pa_de440_excerpt) }.to raise_error( + ArgumentError, /binary PCK file, use Ephem::PCK/ + ) + end end describe "#initialize" do diff --git a/spec/support/data/moon_pa_de440_excerpt.bpc b/spec/support/data/moon_pa_de440_excerpt.bpc new file mode 100644 index 0000000000000000000000000000000000000000..f0f96662f9f2a05fa4a7e9c88dd15ee8edead6ff GIT binary patch literal 56608 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 K@0<5J{{I0ek7~UD literal 0 HcmV?d00001 diff --git a/spec/support/test_spk_helper.rb b/spec/support/test_spk_helper.rb index 7df1cc9..29fb44e 100644 --- a/spec/support/test_spk_helper.rb +++ b/spec/support/test_spk_helper.rb @@ -16,4 +16,8 @@ def de421_2000_excerpt def inpop21a_2000_excerpt File.path("#{__dir__}/data/inpop21a_2000_excerpt.bsp") end + + def moon_pa_de440_excerpt + File.path("#{__dir__}/data/moon_pa_de440_excerpt.bpc") + end end From c0bc878eb84a84fe4e8ba608a456e353294b31af Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20Hannequin?= Date: Mon, 22 Jun 2026 22:10:26 +0200 Subject: [PATCH 2/5] Refine PCK orientation support: rotation matrices, groups, CLI, tests Completes the binary PCK (DAF/PCK) orientation work on top of the draft. - Add Core::Rotation (kernel-agnostic 3x3 helpers) and Orientation#to_matrix / OrientationSegment#matrix_at, centralizing the 3-1-3 (Z-X-Z), reference->body convention where the kernel knowledge lives. - Route queries to the covering segment when a body/pair spans multiple time intervals (Position/OrientationGroup via SegmentGroup.wrap), with zero overhead for the common single-segment case. - Share the compute/compute_and_differentiate rejection across orientation sources (Segments::OrientationSource). - Excerpt, the excerpt CLI, and Download now handle binary PCK; kernel kind is auto-detected. - Fix compute_and_differentiate returning mismatched velocities for an array of times; document the velocity/rate unit as km/day (rad/day). - Tests: Orientation, Rotation, OrientationSegment, group routing, PCK, plus committed .bpc fixtures (2000-2030 accuracy gate + a boundary excerpt exercising real multi-segment routing). Validated against jplephem (SPK output unchanged, PCK angles exact). --- CHANGELOG.md | 28 +++++++ README.md | 41 +++++++--- lib/ephem.rb | 1 + lib/ephem/cli.rb | 36 ++++++--- lib/ephem/core/orientation.rb | 18 ++++- lib/ephem/excerpt.rb | 8 +- lib/ephem/pck.rb | 20 ++++- lib/ephem/segments/orientation_group.rb | 14 ++++ lib/ephem/segments/orientation_segment.rb | 28 ++++--- lib/ephem/segments/orientation_source.rb | 17 ++++ lib/ephem/segments/segment_group.rb | 10 +++ lib/ephem/spk.rb | 9 +-- spec/ephem/cli_spec.rb | 48 +++++++++++- spec/ephem/core/orientation_spec.rb | 35 +++++++++ spec/ephem/pck_spec.rb | 74 +++++++++++++++--- .../segments/orientation_segment_spec.rb | 20 +++++ .../data/moon_pa_de440_boundary_excerpt.bpc | Bin 0 -> 20032 bytes spec/support/data/moon_pa_de440_excerpt.bpc | Bin 56608 -> 355872 bytes spec/support/test_spk_helper.rb | 4 + 19 files changed, 350 insertions(+), 61 deletions(-) create mode 100644 lib/ephem/segments/orientation_source.rb create mode 100644 spec/support/data/moon_pa_de440_boundary_excerpt.bpc diff --git a/CHANGELOG.md b/CHANGELOG.md index a96ca2f..ba1f4a6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,33 @@ # Changelog +## [0.5.0] - 2026-06-22 + +### Features + +* Read binary PCK (`DAF/PCK`) orientation kernels via `Ephem::PCK`, exposing a + body's Euler angles and rates over time (`angles_at`, `orientation_at`), the + foundation for DE440-grade lunar libration ([#76]) +* Add `Ephem::Core::Orientation` (Euler angles + optional rates) and + `Ephem::Core::Rotation` (kernel-agnostic rotation-matrix helpers), plus + `Orientation#to_matrix` / `OrientationSegment#matrix_at` for the built-in + 3-1-3 (Z-X-Z) reference→body convention +* Excerpt and the `excerpt` CLI now support binary PCK kernels, detecting the + kernel kind automatically +* Download binary PCK lunar orientation kernels from NAIF via `Ephem::Download` + +### Improvements + +* Route queries to the covering segment when a body/pair spans multiple + time-split segments (SPK and PCK), with no overhead for single-segment keys +* Share the type-2 Chebyshev machinery between SPK and PCK segments +* Fix `compute_and_differentiate` returning mismatched velocities for an array + of times +* Correct the documented velocity unit to km/day (the actual, validated value) + +[#76]: https://github.com/rhannequin/ruby-ephem/issues/76 + +**Full Changelog**: https://github.com/rhannequin/ruby-ephem/compare/v0.4.1...v0.5.0 + ## [0.4.1] - 2025-08-03 ### Improvements diff --git a/README.md b/README.md index 285b5d2..5c6bdad 100644 --- a/README.md +++ b/README.md @@ -12,8 +12,9 @@ These files are a collection of numerical integrations of the equations of motion of the Solar System, used to calculate the positions of the planets, the Moon, and other celestial bodies with high precision. -Ephem currently only support planetary ephemerides like DE421, DE430, -INPOP19A, etc. +Ephem supports planetary ephemerides like DE421, DE430, INPOP19A, etc. (SPK), +as well as binary PCK orientation kernels such as the lunar orientation kernel +`moon_pa_de440_200625.bpc`. The library is in high development mode and does not have a stable version yet. The API is subject to major changes at the moment, please keep that in mind if @@ -138,21 +139,28 @@ angles = frame.angles_at(2451545.0) pck.close ``` -`Ephem::Core::Rotation` provides kernel-agnostic helpers to turn Euler angles -into a 3x3 rotation matrix and apply it to a vector, so you can build a -body-fixed frame from the angles: +### Building the body-fixed frame + +The orientation maps the reference frame into the body-fixed frame through the +3-1-3 (Z-X-Z) Euler sequence `M = Rz(psi) * Rx(theta) * Rz(phi)`. That +convention is built in, so you can get the rotation matrix directly: ```rb -phi, theta, psi = angles.to_a -# Compose the inertial -> body-fixed rotation (3-1-3 sequence) -matrix = Ephem::Core::Rotation.multiply( - Ephem::Core::Rotation.about_z(psi), - Ephem::Core::Rotation.about_x(theta), - Ephem::Core::Rotation.about_z(phi) -) -body_fixed = Ephem::Core::Rotation.apply(matrix, some_vector) +# Straight from a frame, at a given time +matrix = frame.matrix_at(2451545.0) + +# ...or from an Orientation you already have +matrix = orientation.to_matrix + +# Project a geocentric Earth->Moon vector into the body-fixed frame +body_fixed = Ephem::Core::Rotation.apply(matrix, earth_to_moon) ``` +`Ephem::Core::Rotation` also exposes the lower-level, kernel-agnostic building +blocks (`about_x`, `about_y`, `about_z`, `multiply`, `apply`) if you need a +different axis order or an additional fixed rotation (such as the PA -> ME +offset, whose constants the consumer supplies). + ## CLI The gem also provides a CLI to generate an excerpt from an original kernel file. @@ -175,6 +183,13 @@ While DE440s originally supports 14 segments from 1849 to 2150 with a size of Not only the excerpt is smaller, but most importantly it is way more efficient to parse and to use in your application. +The input kernel kind (SPK or binary PCK) is detected automatically, so the +same command excerpts orientation kernels too: + +```bash +ruby-ephem excerpt --targets 31008 2000-01-01 2030-01-01 /path/to/moon_pa_de440.bpc moon_excerpt.bpc +``` + ## Accuracy Data from this library has been tested against the Python library [jplephem] diff --git a/lib/ephem.rb b/lib/ephem.rb index 30fe083..35f7ea5 100644 --- a/lib/ephem.rb +++ b/lib/ephem.rb @@ -21,6 +21,7 @@ require_relative "ephem/segments/base_segment" require_relative "ephem/segments/registry" require_relative "ephem/segments/chebyshev_type2" +require_relative "ephem/segments/orientation_source" require_relative "ephem/segments/segment" require_relative "ephem/segments/orientation_segment" require_relative "ephem/segments/segment_group" diff --git a/lib/ephem/cli.rb b/lib/ephem/cli.rb index 986e376..6b8436b 100644 --- a/lib/ephem/cli.rb +++ b/lib/ephem/cli.rb @@ -47,22 +47,22 @@ def self.show_help Ruby Ephem - A tool for working with JPL Ephemerides Commands: - excerpt - Create an excerpt of an SPK file + excerpt - Create an excerpt of an SPK or binary PCK kernel help - Show this help message Excerpt command: ruby-ephem excerpt [options] START_DATE END_DATE INPUT_FILE OUTPUT_FILE Options: - --targets TARGET_IDS - Comma-separated list of target IDs to include - (default: all targets) + --targets TARGET_IDS - Comma-separated list of target/body IDs to + include (default: all) - Example: + Examples: ruby-ephem excerpt --targets 3,10,399 2000-01-01 2030-01-01 de440s.bsp excerpt.bsp + ruby-ephem excerpt --targets 31008 2000-01-01 2030-01-01 moon_pa_de440.bpc moon_excerpt.bpc - This will create an excerpt of de440s.bsp containing only the specified - targets (Earth-Moon barycenter, Sun, Earth) for the period from - 2000-01-01 to 2030-01-01. + The input kernel kind (SPK or binary PCK) is detected automatically and + the excerpt is written in the same format. HELP end @@ -125,9 +125,9 @@ def self.handle_excerpt(args) puts "Including all targets" end - spk = Ephem::SPK.open(input_file) + kernel = open_kernel(input_file) - excerpt_spk = spk.excerpt( + excerpt_kernel = kernel.excerpt( output_path: output_file, start_jd: start_jd, end_jd: end_jd, @@ -136,8 +136,8 @@ def self.handle_excerpt(args) ) puts "Excerpt created successfully!" - puts "Original segments: #{spk.segments.size}" - puts "Excerpt segments: #{excerpt_spk.segments.size}" + puts "Original segments: #{kernel.segments.size}" + puts "Excerpt segments: #{excerpt_kernel.segments.size}" original_size = File.size(input_file) excerpt_size = File.size(output_file) @@ -148,12 +148,22 @@ def self.handle_excerpt(args) puts "Original: #{original_size} bytes" puts "Excerpt: #{excerpt_size} bytes" - spk.close - excerpt_spk.close + kernel.close + excerpt_kernel.close rescue => e puts "Error creating excerpt: #{e.message}" puts e.backtrace if options[:debug] end end + + def self.open_kernel(path) + daf = Ephem::IO::DAF.new(File.open(path, "rb")) + + if daf.file_type == :pck + Ephem::PCK.new(daf: daf) + else + Ephem::SPK.new(daf: daf) + end + end end end diff --git a/lib/ephem/core/orientation.rb b/lib/ephem/core/orientation.rb index bfd9419..25f4350 100644 --- a/lib/ephem/core/orientation.rb +++ b/lib/ephem/core/orientation.rb @@ -61,6 +61,19 @@ def to_a [phi, theta, psi] end + # The rotation matrix that maps the reference frame into the body-fixed + # frame, built from the 3-1-3 (Z-X-Z) Euler angles: + # +M = Rz(psi) * Rx(theta) * Rz(phi)+. Rates are ignored. + # + # @return [Array>] a 3x3 rotation matrix + def to_matrix + Rotation.multiply( + Rotation.about_z(psi), + Rotation.about_x(theta), + Rotation.about_z(phi) + ) + end + # @param index [Integer] 0 for phi, 1 for theta, 2 for psi # @return [Numeric] the angle at the given index # @raise [Ephem::IndexError] if index is not 0, 1, or 2 @@ -74,8 +87,9 @@ def [](index) end def inspect - base = "phi: #{phi}, theta: #{theta}, psi: #{psi}" - rates? ? "Orientation[#{base}, rates: #{rates}]" : "Orientation[#{base}]" + body = "phi: #{phi}, theta: #{theta}, psi: #{psi}" + body += ", rates: #{rates}" if rates? + "Orientation[#{body}]" end alias_method :to_s, :inspect diff --git a/lib/ephem/excerpt.rb b/lib/ephem/excerpt.rb index 8032522..b4bfe4a 100644 --- a/lib/ephem/excerpt.rb +++ b/lib/ephem/excerpt.rb @@ -19,10 +19,10 @@ class Excerpt J2000_EPOCH = Core::Constants::Time::J2000_EPOCH RECORD_SIZE = 1024 - # @param spk [Ephem::SPK] The SPK object to create an excerpt from - def initialize(spk) - @spk = spk - @daf = spk.daf + # @param kernel [Ephem::SPK, Ephem::PCK] The kernel to excerpt from + def initialize(kernel) + @kernel = kernel + @daf = kernel.daf @binary_reader = @daf.binary_reader end diff --git a/lib/ephem/pck.rb b/lib/ephem/pck.rb index f542aff..946f57c 100644 --- a/lib/ephem/pck.rb +++ b/lib/ephem/pck.rb @@ -43,10 +43,12 @@ def close @segments&.each(&:clear_data) end - # Retrieves the orientation segment for a body frame. + # Retrieves the orientation source for a body frame. # # @param body [Integer] NAIF frame ID of the oriented body - # @return [Segments::OrientationSegment] + # @return [Segments::OrientationSegment, Segments::OrientationGroup] a + # single segment, or a group routing each query to the covering segment + # when the body spans several time intervals # @raise [KeyError] if no segment is found for the given body def [](body) @bodies.fetch(body) do @@ -75,6 +77,18 @@ def to_s DESCRIPTION end + def excerpt(output_path:, start_jd:, end_jd:, target_ids: nil, debug: false) + Excerpt + .new(self) + .extract( + output_path: output_path, + start_jd: start_jd, + end_jd: end_jd, + target_ids: target_ids, + debug: debug + ) + end + private def load_segments @@ -85,7 +99,7 @@ def load_segments def build_bodies @segments.group_by(&:body).transform_values do |segments| - segments.one? ? segments.first : Segments::OrientationGroup.new(segments) + Segments::OrientationGroup.wrap(segments) end end diff --git a/lib/ephem/segments/orientation_group.rb b/lib/ephem/segments/orientation_group.rb index fa5a0ec..bb47475 100644 --- a/lib/ephem/segments/orientation_group.rb +++ b/lib/ephem/segments/orientation_group.rb @@ -7,6 +7,8 @@ module Segments # # @see Ephem::Segments::OrientationSegment class OrientationGroup < SegmentGroup + include OrientationSource + # @return [Integer] NAIF frame ID of the oriented body frame def body @segments.first.body @@ -40,6 +42,18 @@ def orientation_at(tdb, tdb2 = 0.0) segment.orientation_at(time, fraction) end end + + # The reference-frame to body-fixed rotation matrix at the given time. + # See {OrientationSegment#matrix_at}. + # + # @param tdb [Numeric, Array] Time(s) in TDB Julian Date + # @param tdb2 [Numeric] Optional fractional part of TDB date + # @return [Array>, Array>>] + def matrix_at(tdb, tdb2 = 0.0) + query(tdb, tdb2) do |segment, time, fraction| + segment.matrix_at(time, fraction) + end + end end end end diff --git a/lib/ephem/segments/orientation_segment.rb b/lib/ephem/segments/orientation_segment.rb index ae99f53..9321956 100644 --- a/lib/ephem/segments/orientation_segment.rb +++ b/lib/ephem/segments/orientation_segment.rb @@ -3,10 +3,11 @@ module Ephem module Segments # Binary PCK orientation segment (data type 2): the orientation of a body - # frame relative to an inertial reference frame, stored as three Euler angles - # in Chebyshev coefficients. + # frame relative to an inertial reference frame, stored as three Euler + # angles in Chebyshev coefficients. class OrientationSegment < BaseSegment include ChebyshevType2 + include OrientationSource COMPONENT_COUNT = 3 # phi, theta, psi @@ -35,7 +36,9 @@ def angles_at(tdb, tdb2 = 0.0) when Numeric to_orientation(generate_position(tdb_seconds)) else - tdb_seconds.map { |t| to_orientation(generate_position(t)) } + tdb_seconds.map do |seconds| + to_orientation(generate_position(seconds)) + end end end @@ -60,14 +63,17 @@ def orientation_at(tdb, tdb2 = 0.0) end end - def compute(*) - raise NotImplementedError, - "Use #angles_at or #orientation_at for orientation segments" - end - - def compute_and_differentiate(*) - raise NotImplementedError, - "Use #orientation_at for orientation segments" + # The reference-frame to body-fixed rotation matrix at the given time, + # built from the 3-1-3 Euler angles. See {Core::Orientation#to_matrix}. + # + # @param tdb [Numeric, Array] Time(s) in TDB Julian Date + # @param tdb2 [Numeric] Optional fractional part of TDB date + # @return [Array>, Array>>] a 3x3 matrix, + # or one per time for an array input + # @raise [Ephem::OutOfRangeError] if time is outside segment coverage + def matrix_at(tdb, tdb2 = 0.0) + angles = angles_at(tdb, tdb2) + angles.is_a?(Array) ? angles.map(&:to_matrix) : angles.to_matrix end def describe(verbose: false) diff --git a/lib/ephem/segments/orientation_source.rb b/lib/ephem/segments/orientation_source.rb new file mode 100644 index 0000000..613a1e5 --- /dev/null +++ b/lib/ephem/segments/orientation_source.rb @@ -0,0 +1,17 @@ +# frozen_string_literal: true + +module Ephem + module Segments + module OrientationSource + def compute(*) + raise NotImplementedError, + "Use #angles_at or #orientation_at for orientation kernels" + end + + def compute_and_differentiate(*) + raise NotImplementedError, + "Use #orientation_at for orientation kernels" + end + end + end +end diff --git a/lib/ephem/segments/segment_group.rb b/lib/ephem/segments/segment_group.rb index 2549ad5..f51f259 100644 --- a/lib/ephem/segments/segment_group.rb +++ b/lib/ephem/segments/segment_group.rb @@ -14,6 +14,16 @@ module Segments # Subclasses ({PositionGroup}, {OrientationGroup}) add the query methods # appropriate to the segments they hold. class SegmentGroup + # Wraps segments that share a key. A single segment is returned as-is, so + # the common case carries no routing overhead; only a key spanning several + # time intervals becomes a group. + # + # @param segments [Array] segments sharing the same key + # @return [BaseSegment, SegmentGroup] + def self.wrap(segments) + segments.one? ? segments.first : new(segments) + end + # @return [Array] the underlying segments attr_reader :segments diff --git a/lib/ephem/spk.rb b/lib/ephem/spk.rb index c07d645..05a9237 100644 --- a/lib/ephem/spk.rb +++ b/lib/ephem/spk.rb @@ -81,8 +81,9 @@ def to_s # # @param center [Integer] NAIF ID of the center body # @param target [Integer] NAIF ID of the target body - # @return [Segments::PositionGroup] The position segment(s) for the - # specified bodies, routing each query to the segment covering the requested time + # @return [Segments::Segment, Segments::PositionGroup] the position source + # for the pair: a single segment, or a group routing each query to the + # covering segment when the pair spans several time intervals # @raise [KeyError] If no segment is found for the given center-target pair def [](center, target) @pairs.fetch([center, target]) do @@ -145,9 +146,7 @@ def load_segments def build_pairs @segments .group_by { |segment| [segment.center, segment.target] } - .transform_values do |segments| - segments.one? ? segments.first : Segments::PositionGroup.new(segments) - end + .transform_values { |segments| Segments::PositionGroup.wrap(segments) } end def build_segment(source:, descriptor:) diff --git a/spec/ephem/cli_spec.rb b/spec/ephem/cli_spec.rb index 3a5cb48..3299e12 100644 --- a/spec/ephem/cli_spec.rb +++ b/spec/ephem/cli_spec.rb @@ -43,7 +43,7 @@ expect(output).to include("Ruby Ephem") expect(output).to include("excerpt") expect(output).to include("--targets") - expect(output).to include("Example:") + expect(output).to include("Examples:") end end @@ -185,6 +185,52 @@ FileUtils.remove_entry(temp_dir) if Dir.exist?(temp_dir) end end + + it "excerpts a binary PCK kernel, detecting the format" do + temp_dir = Dir.mktmpdir("ephem_test_") + input_file = File.join(temp_dir, "input.bpc") + output_file = File.join(temp_dir, "output.bpc") + + begin + FileUtils.cp(moon_pa_de440_excerpt, input_file) + + args = [ + "--targets", + "31008", + "2001-01-01", + "2002-01-01", + input_file, + output_file + ] + output = capture_stdout { Ephem::CLI.handle_excerpt(args) } + + expect(output).to include("Excerpt created successfully") + + excerpt = Ephem::PCK.open(output_file) + expect(excerpt[31008].body).to eq(31008) + excerpt.close + ensure + FileUtils.remove_entry(temp_dir) if Dir.exist?(temp_dir) + end + end + end + end + + describe ".open_kernel" do + it "opens a binary PCK file as Ephem::PCK" do + kernel = Ephem::CLI.open_kernel(moon_pa_de440_excerpt) + + expect(kernel).to be_a(Ephem::PCK) + + kernel.close + end + + it "opens an SPK file as Ephem::SPK" do + kernel = Ephem::CLI.open_kernel(test_spk) + + expect(kernel).to be_a(Ephem::SPK) + + kernel.close end end diff --git a/spec/ephem/core/orientation_spec.rb b/spec/ephem/core/orientation_spec.rb index bc820ce..36b34b8 100644 --- a/spec/ephem/core/orientation_spec.rb +++ b/spec/ephem/core/orientation_spec.rb @@ -57,6 +57,41 @@ end end + describe "#to_matrix" do + it "returns the identity for zero angles" do + matrix = described_class.new(0.0, 0.0, 0.0).to_matrix + + expect(matrix).to eq( + [[1.0, 0.0, 0.0], [0.0, 1.0, 0.0], [0.0, 0.0, 1.0]] + ) + end + + it "composes the 3-1-3 sequence Rz(psi) * Rx(theta) * Rz(phi)" do + phi = 0.3 + theta = 0.7 + psi = 1.1 + expected = Ephem::Core::Rotation.multiply( + Ephem::Core::Rotation.about_z(psi), + Ephem::Core::Rotation.about_x(theta), + Ephem::Core::Rotation.about_z(phi) + ) + + expect(described_class.new(phi, theta, psi).to_matrix).to eq(expected) + end + + it "is orthonormal" do + matrix = described_class.new(1.2, 0.4, 5.9).to_matrix + product = Ephem::Core::Rotation.multiply(matrix, matrix.transpose) + + product.each_with_index do |row, row_index| + row.each_with_index do |value, column_index| + expected = (row_index == column_index) ? 1.0 : 0.0 + expect(value).to be_within(1e-12).of(expected) + end + end + end + end + describe "#==" do it "compares angles and rates" do with_rates = described_class.new(1.0, 2.0, 3.0, rates: [0.1, 0.2, 0.3]) diff --git a/spec/ephem/pck_spec.rb b/spec/ephem/pck_spec.rb index db07246..1d677dd 100644 --- a/spec/ephem/pck_spec.rb +++ b/spec/ephem/pck_spec.rb @@ -65,6 +65,62 @@ end end + describe "a body split across multiple segments" do + it "is served by an OrientationGroup" do + pck = described_class.open(moon_pa_de440_boundary_excerpt) + + group = pck[31008] + expect(group).to be_a(Ephem::Segments::OrientationGroup) + expect(group.segments.size).to eq(2) + + pck.close + end + + it "routes each time to the segment that covers it" do + pck = described_class.open(moon_pa_de440_boundary_excerpt) + group = pck[31008] + early_segment, late_segment = group.segments + early_time = early_segment.start_jd + 10 + late_time = late_segment.start_jd + 10 + + expect(group.angles_at(early_time).to_a) + .to eq(early_segment.angles_at(early_time).to_a) + expect(group.angles_at(late_time).to_a) + .to eq(late_segment.angles_at(late_time).to_a) + + pck.close + end + + it "preserves input order for an array spanning both segments" do + pck = described_class.open(moon_pa_de440_boundary_excerpt) + group = pck[31008] + early_segment, late_segment = group.segments + early_time = early_segment.start_jd + 10 + late_time = late_segment.start_jd + 10 + + results = group.angles_at([late_time, early_time]) + + expect(results[0].to_a).to eq(late_segment.angles_at(late_time).to_a) + expect(results[1].to_a).to eq(early_segment.angles_at(early_time).to_a) + + pck.close + end + + it "rejects position queries with a helpful error" do + pck = described_class.open(moon_pa_de440_boundary_excerpt) + group = pck[31008] + + expect { group.compute(2452000.0) }.to raise_error( + NotImplementedError, /angles_at or #orientation_at/ + ) + expect { group.compute_and_differentiate(2452000.0) }.to raise_error( + NotImplementedError, /orientation_at/ + ) + + pck.close + end + end + describe "accuracy against jplephem (MOON_PA_DE440)" do it "matches reference Euler angles and rates" do pck = described_class.open(moon_pa_de440_excerpt) @@ -90,19 +146,19 @@ def reference_orientations [ { - jd: 2451045.0, - angles: [-0.0310089214024731, 0.432874655509576, 2449.25118158446], - rates: [-5.27075482126779e-05, 7.60544162825503e-06, 0.230015478199546] + jd: 2452000.0, + angles: [-0.0645389064927909, 0.415637068726414, 2668.90512416828], + rates: [0.000371042029495874, -0.00014568869379002, 0.229623457019946] }, { - jd: 2451545.0, - angles: [-0.0541470580870196, 0.424855460999069, 2564.25827272151], - rates: [-0.000117018175276388, 4.51324219231248e-05, 0.230100034112187] + jd: 2456000.0, + angles: [0.0609875385648408, 0.419110500824661, 3588.67325163054], + rates: [-0.000208821705039922, 9.83855110550238e-05, 0.230149931169316] }, { - jd: 2452045.0, - angles: [-0.0683791305700164, 0.413710101076473, 2679.25713036353], - rates: [-0.000132116376724321, 0.000171517329456927, 0.230098834913826] + jd: 2460000.0, + angles: [-0.0423518935446004, 0.387741447813132, 4508.65143781339], + rates: [4.41729372107692e-05, -7.15944475461727e-05, 0.229930175592345] } ] end diff --git a/spec/ephem/segments/orientation_segment_spec.rb b/spec/ephem/segments/orientation_segment_spec.rb index 72bbf95..6d27ec2 100644 --- a/spec/ephem/segments/orientation_segment_spec.rb +++ b/spec/ephem/segments/orientation_segment_spec.rb @@ -52,6 +52,26 @@ end end + describe "#matrix_at" do + it "returns the rotation matrix from the angles" do + segment = create_segment_with_data + time = Ephem::Core::Constants::Time::J2000_EPOCH + + expect(segment.matrix_at(time)) + .to eq(segment.angles_at(time).to_matrix) + end + + it "returns one matrix per time for an array input" do + segment = create_segment_with_data + time = Ephem::Core::Constants::Time::J2000_EPOCH + + matrices = segment.matrix_at([time, time + (15.0 / 86400.0)]) + + expect(matrices.length).to eq(2) + expect(matrices).to all(be_an(Array)) + end + end + describe "#body and #reference_frame" do it "expose the oriented frame and the reference frame" do segment = create_segment_with_data diff --git a/spec/support/data/moon_pa_de440_boundary_excerpt.bpc b/spec/support/data/moon_pa_de440_boundary_excerpt.bpc new file mode 100644 index 0000000000000000000000000000000000000000..001edc19e27e67bd1cd4bfc4795d65f6fb85a8a4 GIT binary patch literal 20032 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 literal 0 HcmV?d00001 diff --git a/spec/support/data/moon_pa_de440_excerpt.bpc b/spec/support/data/moon_pa_de440_excerpt.bpc index f0f96662f9f2a05fa4a7e9c88dd15ee8edead6ff..e0ebbbc2cfdf3cf77efa1e336d85df97ec5db60d 100644 GIT binary patch delta 327526 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

C>KJ@DN*?HdYc?CA?48)0Nfi@*A$<;nuM@h&Lz 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 fRH-JRxB}qx^pti6kUg?B6dQXYBt2r$}xA diff --git a/spec/support/test_spk_helper.rb b/spec/support/test_spk_helper.rb index 29fb44e..05ceb23 100644 --- a/spec/support/test_spk_helper.rb +++ b/spec/support/test_spk_helper.rb @@ -20,4 +20,8 @@ def inpop21a_2000_excerpt def moon_pa_de440_excerpt File.path("#{__dir__}/data/moon_pa_de440_excerpt.bpc") end + + def moon_pa_de440_boundary_excerpt + File.path("#{__dir__}/data/moon_pa_de440_boundary_excerpt.bpc") + end end From 64ae21b6d84ae52d0b400523a73e6f1162038438 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20Hannequin?= Date: Mon, 22 Jun 2026 22:40:40 +0200 Subject: [PATCH 3/5] Evaluate position and velocity in a single Chebyshev pass State queries previously ran two full Clenshaw passes over the same coefficients: one for position (evaluate) and one for velocity (evaluate_derivative). Profiling showed those two passes were ~80% of compute_and_differentiate. Add ChebyshevPolynomial.evaluate_with_derivative, which fuses the value and derivative recurrences into one loop so the coefficient fetch and loop control are shared. The arithmetic of each recurrence is unchanged, so results are bit-for-bit identical to calling the two methods separately (verified across real and random coefficients; SPK position and velocity still match jplephem exactly). generate_single now uses it, speeding up every state/orientation query (compute_and_differentiate, state_at, orientation_at): ~13% faster for scalar state queries; the corrected batch path is now faster than it was before the array-velocity fix. --- CHANGELOG.md | 4 ++ benchmarks/run.rb | 6 ++ lib/ephem/computation/chebyshev_polynomial.rb | 59 +++++++++++++++++++ lib/ephem/segments/chebyshev_type2.rb | 7 +-- .../computation/chebyshev_polynomial_spec.rb | 29 +++++++++ 5 files changed, 99 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ba1f4a6..3bf941d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,6 +20,10 @@ * Route queries to the covering segment when a body/pair spans multiple time-split segments (SPK and PCK), with no overhead for single-segment keys * Share the type-2 Chebyshev machinery between SPK and PCK segments +* Evaluate position and velocity in a single Chebyshev pass + (`ChebyshevPolynomial.evaluate_with_derivative`), speeding up every state / + orientation query (`compute_and_differentiate`, `state_at`, `orientation_at`) + with bit-for-bit identical results * Fix `compute_and_differentiate` returning mismatched velocities for an array of times * Correct the documented velocity unit to km/day (the actual, validated value) diff --git a/benchmarks/run.rb b/benchmarks/run.rb index 27b85a3..779f597 100644 --- a/benchmarks/run.rb +++ b/benchmarks/run.rb @@ -295,6 +295,12 @@ def ensure_file!(path) ) end + x.report("evaluate_with_derivative (pos+vel, 1 pass)") do + Ephem::Computation::ChebyshevPolynomial.evaluate_with_derivative( + test_coeffs, test_t, test_radius + ) + end + x.compare! end diff --git a/lib/ephem/computation/chebyshev_polynomial.rb b/lib/ephem/computation/chebyshev_polynomial.rb index c6973fa..3ad3101 100644 --- a/lib/ephem/computation/chebyshev_polynomial.rb +++ b/lib/ephem/computation/chebyshev_polynomial.rb @@ -85,6 +85,65 @@ def self.evaluate_derivative(coeffs, t, radius) scale = Ephem::Core::Constants::Time::SECONDS_PER_DAY / (2.0 * radius) [d1x * scale, d1y * scale, d1z * scale] end + + ## + # Evaluates a 3D Chebyshev polynomial and its time derivative in a single + # pass. It runs the same value and derivative recurrences as {evaluate} + # and {evaluate_derivative}, but fused into one loop so the coefficient + # fetch and loop control are shared. Results are bit-for-bit identical to + # calling the two methods separately. + # + # @param coeffs [Array>] coefficients; shape [n_terms][3]. + # @param t [Float] normalized independent variable, in [-1, 1]. + # @param radius [Float] half-length of the time interval (seconds). + # @return [Array(Array, Array)] [position, velocity], with + # velocity in units per day. + def self.evaluate_with_derivative(coeffs, t, radius) + n = coeffs.size + b1x = b1y = b1z = 0.0 + b2x = b2y = b2z = 0.0 + d1x = d1y = d1z = 0.0 + d2x = d2y = d2z = 0.0 + + t2 = 2.0 * t + k = n - 1 + while k > 0 + c = coeffs[k] + c0 = c[0] + c1 = c[1] + c2 = c[2] + k2 = 2 * k + + bx = t2 * b1x - b2x + c0 + by = t2 * b1y - b2y + c1 + bz = t2 * b1z - b2z + c2 + dx = t2 * d1x - d2x + k2 * c0 + dy = t2 * d1y - d2y + k2 * c1 + dz = t2 * d1z - d2z + k2 * c2 + + b2x = b1x + b2y = b1y + b2z = b1z + b1x = bx + b1y = by + b1z = bz + d2x = d1x + d2y = d1y + d2z = d1z + d1x = dx + d1y = dy + d1z = dz + k -= 1 + end + + c0, c1, c2 = coeffs[0] + position = [t * b1x - b2x + c0, t * b1y - b2y + c1, t * b1z - b2z + c2] + + scale = Ephem::Core::Constants::Time::SECONDS_PER_DAY / (2.0 * radius) + velocity = [d1x * scale, d1y * scale, d1z * scale] + + [position, velocity] + end end end end diff --git a/lib/ephem/segments/chebyshev_type2.rb b/lib/ephem/segments/chebyshev_type2.rb index 578f0c9..79d89c1 100644 --- a/lib/ephem/segments/chebyshev_type2.rb +++ b/lib/ephem/segments/chebyshev_type2.rb @@ -88,16 +88,11 @@ def generate_single(tdb_seconds) normalized_time = compute_normalized_time(tdb_seconds, interval) coeffs = @coefficients[interval] # already [n_terms][3] - position = Computation::ChebyshevPolynomial.evaluate( - coeffs, - normalized_time - ) - velocity = Computation::ChebyshevPolynomial.evaluate_derivative( + Computation::ChebyshevPolynomial.evaluate_with_derivative( coeffs, normalized_time, @radii[interval] ) - [position, velocity] end def generate_multiple(tdb_seconds) diff --git a/spec/ephem/computation/chebyshev_polynomial_spec.rb b/spec/ephem/computation/chebyshev_polynomial_spec.rb index aa177b0..14b523f 100644 --- a/spec/ephem/computation/chebyshev_polynomial_spec.rb +++ b/spec/ephem/computation/chebyshev_polynomial_spec.rb @@ -191,6 +191,35 @@ end end + describe ".evaluate_with_derivative" do + it "matches #evaluate and #evaluate_derivative exactly" do + coeffs = [ + [1.0, 2.0, 3.0], + [0.5, 0.2, -1.5], + [-0.25, 1.0, 2.0], + [0.1, -0.4, 0.7] + ] + radius = 2000.0 + + [-1.0, -0.3, 0.0, 0.42, 1.0].each do |t| + position, velocity = + described_class.evaluate_with_derivative(coeffs, t, radius) + + expect(position).to eq(described_class.evaluate(coeffs, t)) + expect(velocity) + .to eq(described_class.evaluate_derivative(coeffs, t, radius)) + end + end + + it "returns a zero velocity for a constant polynomial" do + position, velocity = + described_class.evaluate_with_derivative([[1.0, 2.0, 3.0]], 0.3, 100.0) + + expect(position).to eq([1.0, 2.0, 3.0]) + expect(velocity).to eq([0.0, 0.0, 0.0]) + end + end + def expect_vector_close(result, expected, tol = 1e-10) expect(result.size).to eq(expected.size) result.zip(expected).each do |a, b| From 55752eff64d15f1cab6885d9f768ec0f11cd27ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20Hannequin?= Date: Mon, 22 Jun 2026 23:39:08 +0200 Subject: [PATCH 4/5] Close the DAF if kernel construction fails when opening --- lib/ephem/cli.rb | 3 +++ lib/ephem/pck.rb | 4 +++- lib/ephem/spk.rb | 4 +++- spec/ephem/cli_spec.rb | 11 +++++++++++ spec/ephem/pck_spec.rb | 12 ++++++++++++ 5 files changed, 32 insertions(+), 2 deletions(-) diff --git a/lib/ephem/cli.rb b/lib/ephem/cli.rb index 6b8436b..79ba96c 100644 --- a/lib/ephem/cli.rb +++ b/lib/ephem/cli.rb @@ -164,6 +164,9 @@ def self.open_kernel(path) else Ephem::SPK.new(daf: daf) end + rescue + daf&.close + raise end end end diff --git a/lib/ephem/pck.rb b/lib/ephem/pck.rb index 946f57c..02e115d 100644 --- a/lib/ephem/pck.rb +++ b/lib/ephem/pck.rb @@ -28,13 +28,15 @@ def initialize(daf:) def self.open(path) daf = IO::DAF.new(File.open(path, "rb")) unless daf.file_type == :pck - daf.close raise ArgumentError, "#{path} is not a binary PCK (DAF/PCK) file" end new(daf: daf) rescue Errno::EACCES => e raise ArgumentError, "File permission denied: #{path} (#{e.message})" + rescue + daf&.close + raise end # @return [void] diff --git a/lib/ephem/spk.rb b/lib/ephem/spk.rb index 05a9237..72cdb86 100644 --- a/lib/ephem/spk.rb +++ b/lib/ephem/spk.rb @@ -49,13 +49,15 @@ def initialize(daf:) def self.open(path) daf = IO::DAF.new(File.open(path, "rb")) if daf.file_type == :pck - daf.close raise ArgumentError, "#{path} is a binary PCK file, use Ephem::PCK.open" end new(daf: daf) rescue Errno::EACCES => e raise ArgumentError, "File permission denied: #{path} (#{e.message})" + rescue + daf&.close + raise end # Closes the SPK file and cleans up resources. diff --git a/spec/ephem/cli_spec.rb b/spec/ephem/cli_spec.rb index 3299e12..64d46eb 100644 --- a/spec/ephem/cli_spec.rb +++ b/spec/ephem/cli_spec.rb @@ -232,6 +232,17 @@ kernel.close end + + it "closes the DAF when the kernel cannot be built" do + daf = instance_double(Ephem::IO::DAF, file_type: :pck) + allow(File).to receive(:open).and_return(instance_double(File)) + allow(Ephem::IO::DAF).to receive(:new).and_return(daf) + allow(Ephem::PCK).to receive(:new).and_raise(Ephem::UnsupportedError) + + expect(daf).to receive(:close) + expect { Ephem::CLI.open_kernel("kernel.bpc") } + .to raise_error(Ephem::UnsupportedError) + end end def capture_stdout diff --git a/spec/ephem/pck_spec.rb b/spec/ephem/pck_spec.rb index 1d677dd..be732a3 100644 --- a/spec/ephem/pck_spec.rb +++ b/spec/ephem/pck_spec.rb @@ -18,6 +18,18 @@ ArgumentError, /not a binary PCK/ ) end + + it "closes the DAF when the kernel cannot be built" do + daf = instance_double(Ephem::IO::DAF, file_type: :pck) + allow(File).to receive(:open).and_return(instance_double(File)) + allow(Ephem::IO::DAF).to receive(:new).and_return(daf) + allow(described_class).to receive(:new) + .and_raise(Ephem::UnsupportedError) + + expect(daf).to receive(:close) + expect { described_class.open("kernel.bpc") } + .to raise_error(Ephem::UnsupportedError) + end end describe "#[]" do From c9db1f8208248f835be42b9e713ee561c7a2cfb0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20Hannequin?= Date: Mon, 22 Jun 2026 23:47:07 +0200 Subject: [PATCH 5/5] Linting --- lib/ephem/pck.rb | 2 +- lib/ephem/segments/segment_group.rb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/ephem/pck.rb b/lib/ephem/pck.rb index 02e115d..4e6da56 100644 --- a/lib/ephem/pck.rb +++ b/lib/ephem/pck.rb @@ -75,7 +75,7 @@ def each_segment(&block) def to_s <<~DESCRIPTION PCK file with #{@segments.size} segments: - #{@segments.map(&:to_s).join("\n")} + #{@segments.join("\n")} DESCRIPTION end diff --git a/lib/ephem/segments/segment_group.rb b/lib/ephem/segments/segment_group.rb index f51f259..98a38fa 100644 --- a/lib/ephem/segments/segment_group.rb +++ b/lib/ephem/segments/segment_group.rb @@ -40,7 +40,7 @@ def clear_data end def to_s - @segments.map(&:to_s).join("\n") + @segments.join("\n") end private