MeshLib C++ Docs
Loading...
Searching...
No Matches
MRRigidXf3.h
Go to the documentation of this file.
1#pragma once
2
3#include "MRAffineXf3.h"
4#include "MRQuaternion.h"
5
6namespace MR
7{
10
11
14template <typename T>
16{
17 using V = Vector3<T>;
18
19 V a;
20 V b;
21
22 constexpr RigidXf3() noexcept = default;
23 constexpr RigidXf3( const V & a, const V & b ) noexcept : a( a ), b( b ) { }
24 template <typename U>
25 constexpr explicit RigidXf3( const RigidXf3<U> & xf ) noexcept : a( xf.a ), b( xf.b ) { }
26
28 [[nodiscard]] AffineXf3<T> rigidXf() const { return { Matrix3<T>( Quaternion<T>( a, a.length() ) ), b }; }
29
31 [[nodiscard]] AffineXf3<T> linearXf() const { return { Matrix3<T>::approximateLinearRotationMatrixFromEuler( a ), b }; }
32};
33
34}
V b
shift
Definition MRRigidXf3.h:20
constexpr RigidXf3(const RigidXf3< U > &xf) noexcept
Definition MRRigidXf3.h:25
auto length() const
Definition MRVector3.h:69
constexpr RigidXf3() noexcept=default
V a
rotation angles relative to x,y,z axes
Definition MRRigidXf3.h:19
AffineXf3< T > linearXf() const
converts this into not-rigid transformation but with matrix, which linearly depends on angles
Definition MRRigidXf3.h:31
AffineXf3< T > rigidXf() const
converts this into rigid transformation, which non-linearly depends on angles
Definition MRRigidXf3.h:28
only for bindings generation
Definition MRCameraOrientationPlugin.h:8
Definition MRMatrix3.h:24
Definition MRQuaternion.h:16
Definition MRRigidXf3.h:16
Definition MRVector3.h:33