|
static constexpr auto | dimension (const T &) |
|
static constexpr auto | stat_dimension (const T &) |
|
static constexpr auto | is_euclidean (const T &) |
|
static constexpr std::size_t | hash_code (const T &) |
|
template<typename Getter , typename L , std::enable_if_t< values::index< L > and values::value< typename std::invoke_result< const Getter &, std::size_t >::type >, int > = 0> |
static constexpr auto | to_euclidean_component (const T &t, const Getter &g, const L &euclidean_local_index) |
| Maps a polar coordinate to coordinates in Euclidean space. More...
|
|
template<typename Getter , typename L , std::enable_if_t< values::index< L > and values::value< typename std::invoke_result< const Getter &, std::size_t >::type >, int > = 0> |
static constexpr auto | from_euclidean_component (const T &t, const Getter &g, const L &local_index) |
| Maps a coordinate in Euclidean space to an element. More...
|
|
template<typename Getter , typename L , std::enable_if_t< values::index< L > and values::value< typename std::invoke_result< const Getter &, std::size_t >::type >, int > = 0> |
static constexpr auto | get_wrapped_component (const T &t, const Getter &g, const L &local_index) |
| Perform modular wrapping of polar coordinates. More...
|
|
template<typename Setter , typename Getter , typename X , typename L , std::enable_if_t< values::value< X > and values::index< L > and std::is_invocable< const Setter &, const X &, std::size_t >::value and std::is_invocable< const Setter &, typename std::invoke_result< const Getter &, std::size_t >::type, std::size_t >::value, int > = 0> |
static constexpr void | set_wrapped_component (const T &t, const Setter &s, const Getter &g, const X &x, const L &local_index) |
| Set an element and then perform any necessary modular wrapping. More...
|
|
template<typename T, typename Min, typename Max, std::size_t d_i, std::size_t a_i, std::size_t d2_i, std::size_t x_i, std::size_t y_i>
template<typename Getter , typename L , std::enable_if_t< values::index< L > and values::value< typename std::invoke_result< const Getter &, std::size_t >::type >, int > = 0>
Maps a coordinate in Euclidean space to an element.
This function takes x, y, and z Cartesian coordinates representing a location on a unit half-cylinder, and converts them to polar coordinates.
- Parameters
-
g | An element getter (std::function<Scalar(std::size_t) ) |
local_index | A local index relative to the original coordinates (starting at 0) |
start | The starting index within the Euclidean-transformed indices |
template<typename T, typename Min, typename Max, std::size_t d_i, std::size_t a_i, std::size_t d2_i, std::size_t x_i, std::size_t y_i>
template<typename Getter , typename L , std::enable_if_t< values::index< L > and values::value< typename std::invoke_result< const Getter &, std::size_t >::type >, int > = 0>
Perform modular wrapping of polar coordinates.
The wrapping operation is equivalent to mapping to, and then back from, Euclidean space.
- Parameters
-
g | An element getter (std::function<Scalar(std::size_t) ) |
local_index | A local index accessing the angle (in this case, it must be 0) |
start | The starting location of the angle within any larger set of coordinates::pattern |
template<typename T, typename Min, typename Max, std::size_t d_i, std::size_t a_i, std::size_t d2_i, std::size_t x_i, std::size_t y_i>
template<typename Setter , typename Getter , typename X , typename L , std::enable_if_t< values::value< X > and values::index< L > and std::is_invocable< const Setter &, const X &, std::size_t >::value and std::is_invocable< const Setter &, typename std::invoke_result< const Getter &, std::size_t >::type, std::size_t >::value, int > = 0>
static constexpr void OpenKalman::interface::detail::PolarBase< T, Min, Max, d_i, a_i, d2_i, x_i, y_i >::set_wrapped_component |
( |
const T & |
t, |
|
|
const Setter & |
s, |
|
|
const Getter & |
g, |
|
|
const X & |
x, |
|
|
const L & |
local_index |
|
) |
| |
|
inlinestatic |
Set an element and then perform any necessary modular wrapping.
The operation is equivalent to setting the angle and then mapping to, and then back from, Euclidean space.
- Parameters
-
s | An element setter (std::function<void(std::size_t, Scalar) ) |
g | An element getter (std::function<Scalar(std::size_t) ) |
x | The scalar value to be set. |
local_index | A local index accessing the angle (in this case, it must be 0) |
start | The starting location of the angle within any larger set of coordinates::pattern |
template<typename T, typename Min, typename Max, std::size_t d_i, std::size_t a_i, std::size_t d2_i, std::size_t x_i, std::size_t y_i>
template<typename Getter , typename L , std::enable_if_t< values::index< L > and values::value< typename std::invoke_result< const Getter &, std::size_t >::type >, int > = 0>
Maps a polar coordinate to coordinates in Euclidean space.
This function takes a set of polar coordinates and converts them to x, y, and z Cartesian coordinates representing a location on a unit half-cylinder.
- Parameters
-
g | An element getter (std::function<Scalar(std::size_t) ) |
euclidean_local_index | A local index relative to the Euclidean-transformed coordinates (starting at 0) |
start | The starting index within the coordinates::pattern object |