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.