.. _program_listing_file_src_navtk_utils_interpolation.hpp: Program Listing for File interpolation.hpp ========================================== |exhale_lsh| :ref:`Return to documentation for file ` (``src/navtk/utils/interpolation.hpp``) .. |exhale_lsh| unicode:: U+021B0 .. UPWARDS ARROW WITH TIP LEFTWARDS .. code-block:: cpp #pragma once #include #include #include #include #include #include #include namespace navtk { namespace utils { template std::vector condition_source_data(std::vector &time_source, std::vector &data_source, std::vector &time_interp); std::pair, std::vector> linear_interpolate( const std::vector &time_source, const std::vector &data_source, const std::vector &time_interp); std::pair, std::vector> quadratic_spline_interpolate( const std::vector &time_source, const std::vector &data_source, const std::vector &time_interp); std::pair, std::vector> cubic_spline_interpolate( const std::vector &orig_time_source, const std::vector &data_source, const std::vector &orig_time_interp); template Y linear_interpolate(double x0, const Y &y0, double x1, const Y &y1, double x) { if (x0 == x1) return y1; double xpart = (x - x0) / (x1 - x0); Y ypart = (y1 - y0) * xpart; return y0 + ypart; } template Y linear_interpolate(const aspn_xtensor::TypeTimestamp &x0, const Y &y0, const aspn_xtensor::TypeTimestamp &x1, const Y &y1, const aspn_xtensor::TypeTimestamp &x) { if (x0 == x1) return y1; double xpart = (double)(x.get_elapsed_nsec() - x0.get_elapsed_nsec()) / (x1.get_elapsed_nsec() - x0.get_elapsed_nsec()); Y ypart = (y1 - y0) * xpart; return y0 + ypart; } aspn_xtensor::MeasurementPositionVelocityAttitude linear_interp_pva( const aspn_xtensor::MeasurementPositionVelocityAttitude &pva1, const aspn_xtensor::MeasurementPositionVelocityAttitude &pva2, const aspn_xtensor::TypeTimestamp &t); not_null> linear_interp_pva( navtk::not_null> pva1, navtk::not_null> pva2, const aspn_xtensor::TypeTimestamp &t); aspn_xtensor::MeasurementPositionVelocityAttitude linear_extrapolate_pva( const aspn_xtensor::MeasurementPositionVelocityAttitude &pva1, const aspn_xtensor::MeasurementPositionVelocityAttitude &pva2, const aspn_xtensor::TypeTimestamp &t); not_null> linear_extrapolate_pva( navtk::not_null> pva1, navtk::not_null> pva2, const aspn_xtensor::TypeTimestamp &t); Vector3 linear_interp_rpy(const aspn_xtensor::TypeTimestamp &t1, const Vector3 &rpy1, const aspn_xtensor::TypeTimestamp &t2, const Vector3 &rpy2, const aspn_xtensor::TypeTimestamp &t); Vector3 linear_extrapolate_rpy(const aspn_xtensor::TypeTimestamp &t1, const Vector3 &rpy1, const aspn_xtensor::TypeTimestamp &t2, const Vector3 &rpy2, const aspn_xtensor::TypeTimestamp &t); } // namespace utils } // namespace navtk