smooth
A C++ library for Lie theory
Loading...
Searching...
No Matches
cumulative_spline.hpp
Go to the documentation of this file.
1// Copyright (C) 2021-2022 Petter Nilsson. MIT License.
2
3#pragma once
4
10#include <cassert>
11#include <optional>
12
13#include "../detail/traits.hpp"
14#include "../lie_groups.hpp"
15#include "../polynomial/basis.hpp"
16#include "common.hpp"
17
18SMOOTH_BEGIN_NAMESPACE
19
37template<int K, LieGroup G>
38 requires(K > 0)
40 std::ranges::sized_range auto && vs,
41 const MatrixType auto & Bcum,
42 Scalar<G> u,
43 OptTangent<G> vel = {},
44 OptTangent<G> acc = {},
45 OptTangent<G> jer = {}) noexcept;
46
64template<int K, LieGroup G>
65 requires(K > 0)
66SplineJacobian<G, K - 1> cspline_eval_dg_dvs(
67 std::ranges::sized_range auto && vs,
68 const MatrixType auto & Bcum,
69 const Scalar<G> & u,
70 OptSplineJacobian<G, K - 1> dvel_dvs = {},
71 OptSplineJacobian<G, K - 1> dacc_dvs = {}) noexcept;
72
90template<int K, std::ranges::sized_range R, LieGroup G = std::ranges::range_value_t<R>>
91 requires(K > 0)
93 R && gs,
94 const MatrixType auto & Bcum,
95 Scalar<G> u,
96 OptTangent<G> vel = {},
97 OptTangent<G> acc = {},
98 OptTangent<G> jer = {}) noexcept;
99
118template<int K, std::ranges::sized_range R, LieGroup G = std::ranges::range_value_t<R>>
119 requires(K > 0)
120SplineJacobian<G, K> cspline_eval_dg_dgs(
121 R && gs,
122 const MatrixType auto & Bcum,
123 const Scalar<G> & u,
124 OptSplineJacobian<G, K> dvel_dgs = {},
125 OptSplineJacobian<G, K> dacc_dgs = {}) noexcept;
126
127SMOOTH_END_NAMESPACE
128#include "detail/cumulative_spline_impl.hpp"
SMOOTH_BEGIN_NAMESPACE G cspline_eval_vs(std::ranges::sized_range auto &&vs, const MatrixType auto &Bcum, Scalar< G > u, OptTangent< G > vel={}, OptTangent< G > acc={}, OptTangent< G > jer={}) noexcept
Evaluate a cumulative spline of order from differences.
SplineJacobian< G, K > cspline_eval_dg_dgs(R &&gs, const MatrixType auto &Bcum, const Scalar< G > &u, OptSplineJacobian< G, K > dvel_dgs={}, OptSplineJacobian< G, K > dacc_dgs={}) noexcept
Derivatives of a cumulative spline w.r.t. the coefficients.
G cspline_eval_gs(R &&gs, const MatrixType auto &Bcum, Scalar< G > u, OptTangent< G > vel={}, OptTangent< G > acc={}, OptTangent< G > jer={}) noexcept
Evaluate a cumulative basis spline of order K from coefficients.
SplineJacobian< G, K - 1 > cspline_eval_dg_dvs(std::ranges::sized_range auto &&vs, const MatrixType auto &Bcum, const Scalar< G > &u, OptSplineJacobian< G, K - 1 > dvel_dvs={}, OptSplineJacobian< G, K - 1 > dacc_dvs={}) noexcept
Derivatives of a cumulative spline w.r.t. the differences.
typename traits::man< M >::Scalar Scalar
Manifold scalar type.
Definition manifold.hpp:88