12#include <nlohmann/json.hpp> 
   13#include <opencv2/core.hpp> 
   53    static constexpr std::string_view 
TYPE{
"Transform3D"};
 
   56    using Pointer = std::shared_ptr<Transform3D>;
 
   69    [[nodiscard]] 
virtual auto type() const -> std::string_view = 0;
 
  104    [[nodiscard]] auto 
source() const -> std::
string;
 
  116    [[nodiscard]] auto 
target() const -> std::
string;
 
  119    [[nodiscard]] virtual auto 
applyPoint(const cv::Vec3d& point) const
 
  122    [[nodiscard]] virtual auto 
applyVector(const cv::Vec3d& vector) const
 
  143        const cv::Vec6d& ptN, 
bool normalize = true) const -> cv::Vec6d;
 
  173    static 
void Save(const filesystem::path& path, const 
Pointer& transform);
 
  246    static constexpr std::string_view 
TYPE{
"AffineTransform"};
 
  252    using Pointer = std::shared_ptr<AffineTransform>;
 
  258    [[nodiscard]] 
auto type() const -> std::string_view final;
 
  287    void translate(
double x, 
double y, 
double z);
 
  294    template <typename Tp, 
int Cn>
 
  295    void translate(const cv::Vec<Tp, Cn>& translation)
 
  297        static_assert(Cn >= 3, 
"cv::Vec must have >= 3 values");
 
  298        translate(translation[0], translation[1], translation[2]);
 
  306    void rotate(
double angle, 
double ax, 
double ay, 
double az);
 
  315    template <
typename Tp, 
int Cn>
 
  316    void rotate(
const double angle, cv::Vec<Tp, Cn> axis)
 
  318        static_assert(Cn >= 3, 
"cv::Vec must have >= 3 values");
 
  319        rotate(angle, axis[0], axis[1], axis[2]);
 
  323    void scale(
double sx, 
double sy, 
double sz);
 
  358    static constexpr std::string_view 
TYPE{
"IdentityTransform"};
 
  361    using Pointer = std::shared_ptr<IdentityTransform>;
 
  367    [[nodiscard]] 
auto type() const -> std::string_view final;
 
  440    static constexpr std::string_view 
TYPE{
"CompositeTransform"};
 
  443    using Pointer = std::shared_ptr<CompositeTransform>;
 
  449    [[nodiscard]] 
auto type() const -> std::string_view final;
 
  481    [[nodiscard]] auto size() const noexcept -> std::
size_t;
 
  525template <class PointSetT>
 
  531#include "vc/core/types/TransformsImpl.hpp" 
A raster of a UVMap that provides a per-pixel mapping between a Volume and a Texture generated from t...
Volume Cartographer library
itk::Mesh< ITKPixel, 3, ITKMeshTraits > ITKMesh
auto ApplyTransform(const ITKMesh::Pointer &mesh, const Transform3D::Pointer &transform, bool normalize=true) -> ITKMesh::Pointer
Apply a transform to an ITKMesh.