21template<
size_t I,
typename T>
24template<
size_t I,
typename T>
27template<
size_t I,
typename T>
30template<
size_t I,
typename T>
33template<
size_t I,
typename T>
36template<
size_t I,
typename T>
40struct tuple_element<0,
MR::
AffineXf<V>> {
using type =
typename V::MatrixType; };
43struct tuple_element<1,
MR::
AffineXf<V>> {
using type = V; };
46struct tuple_element<0,
MR::Id<T>> {
using type = int; };
49struct tuple_element<
I,
MR::Color> {
using type = uint8_t; };
52struct tuple_size<
MR::Vector2<T>> : integral_constant<size_t, MR::Vector2<T>::elements> {};
55struct tuple_size<
MR::
Vector3<T>> : integral_constant<size_t, MR::Vector3<T>::elements> {};
58struct tuple_size<
MR::Vector4<T>> : integral_constant<size_t, MR::Vector4<T>::elements> {};
61struct tuple_size<
MR::
Matrix2<T>> : integral_constant<size_t, MR::Matrix2<T>::VectorType::elements> {};
64struct tuple_size<
MR::Matrix3<T>> : integral_constant<size_t, MR::Matrix3<T>::VectorType::elements> {};
67struct tuple_size<
MR::
Matrix4<T>> : integral_constant<size_t, MR::Matrix4<T>::VectorType::elements> {};
70struct tuple_size<
MR::
AffineXf<V>> : integral_constant<size_t, 2> {};
73struct tuple_size<
MR::Id<T>> : integral_constant<size_t, 1> {};
76struct tuple_size<
MR::Color> : integral_constant<size_t, 4> {};
82template<
size_t I,
typename T>
83constexpr const T&
get(
const Vector2<T>& v )
noexcept {
return v[int(
I )]; }
85template<
size_t I,
typename T>
88template<
size_t I,
typename T>
89constexpr const T&
get(
const Vector3<T>& v )
noexcept {
return v[int(
I )]; }
91template<
size_t I,
typename T>
94template<
size_t I,
typename T>
95constexpr const T&
get(
const Vector4<T>& v )
noexcept {
return v[int(
I )]; }
97template<
size_t I,
typename T>
100template<
size_t I,
typename T>
103template<
size_t I,
typename T>
106template<
size_t I,
typename T>
109template<
size_t I,
typename T>
112template<
size_t I,
typename T>
115template<
size_t I,
typename T>
118template<
size_t I,
typename V>
119constexpr const typename std::tuple_element<I, AffineXf<V>>::type&
get(
const AffineXf<V>& m )
noexcept
121 if constexpr (
I == 0 )
127template<
size_t I,
typename V>
128constexpr typename std::tuple_element<I, AffineXf<V>>::type&
get(
AffineXf<V>& m )
noexcept
130 if constexpr (
I == 0 )
136template <
size_t I,
typename T>
139 static_assert(
I == 0 );
143template <
size_t I,
typename T>
146 static_assert(
I == 0 );
151constexpr const uint8_t&
get(
const Color& c )
noexcept
153 static_assert(
I < 4 );
160 static_assert(
I < 4 );
Definition MRMesh/MRId.h:13
constexpr const V & get(const Box< V > &box) noexcept
get<0> returns min, get<1> returns max
Definition MRMesh/MRBox.h:268
Definition MRCameraOrientationPlugin.h:8
MRMESH_CLASS Vector3< double > Matrix2
Definition MRMesh/MRMeshFwd.h:153
MRMESH_CLASS Vector3< double > Matrix2< double > Matrix4
Definition MRMesh/MRMeshFwd.h:169
I
Definition MRMesh/MRMeshFwd.h:88
MRMESH_CLASS Vector3< double > Matrix2< double > Matrix4< double > SymMatrix3< double > AffineXf
Definition MRMesh/MRMeshFwd.h:201
MRMESH_CLASS Vector3
Definition MRMesh/MRMeshFwd.h:137
Definition MRMesh/MRAffineXf.h:14
Definition MRMatrix2.h:13
Definition MRMesh/MRMatrix3.h:13
Definition MRMatrix4.h:14
Definition MRVector2.h:18
T ValueType
Definition MRVector2.h:19
Definition MRMesh/MRVector3.h:19
T ValueType
Definition MRMesh/MRVector3.h:20
Definition MRVector4.h:13
T ValueType
Definition MRVector4.h:14