7#include <Eigen/Geometry>
8#include <Eigen/src/Core/Matrix.h>
12#include <fmt/format.h>
13#include <fmt/ostream.h>
14#include <fmt/printf.h>
15#include <fmt/ranges.h>
17#include <opencv2/core.hpp>
46const Eigen::IOFormat
OctaveFmt(Eigen::StreamPrecision, 0,
", ",
";\n",
"",
"",
51struct fmt::formatter<Eigen::WithFormat<T>> : fmt::ostream_formatter {};
54struct fmt::formatter<
cv::Size_<T>> : fmt::ostream_formatter {};
56template <
typename Scalar>
57struct fmt::formatter<Eigen::Quaternion<Scalar>>
58 : fmt::formatter<fmt::string_view> {
59 auto format(
const Eigen::Quaternion<Scalar> &value, format_context &ctx)
const
60 -> format_context::iterator {
61 return fmt::format_to(ctx.out(),
"Ouat[{:.3f}X {:.3f}Y {:.3f}Z {:.3f}W]",
62 value.x(), value.y(), value.z(), value.w());
67struct fmt::formatter<Eigen::Matrix<float, 4, 1>>
68 : fmt::formatter<fmt::string_view> {
70 auto format(
const Eigen::Matrix<float, 4, 1> &value,
71 format_context &ctx)
const -> format_context::iterator {
72 return fmt::format_to(ctx.out(),
"Vec[{:.3f},{:.3f},{:.3f},{:.3f}]",
73 value(0, 0), value(1, 0), value(2, 0), value(3, 0));
95 T, std::enable_if_t<std::is_base_of_v<Eigen::DenseBase<T>, T>, char>>
96 : ostream_formatter {};