20#ifndef _SOURCE_TYPES_TFMATRIX4_H_
21#define _SOURCE_TYPES_TFMATRIX4_H_
26#include <Magnum/Math/Matrix4.h>
32 template<
class T>
using Matrix4Base = Magnum::Math::Matrix4<T>;
39 return Matrix4Base<T>::translation(vector);
44 return Matrix4Base<T>::scaling(vector);
49 return Matrix4Base<T>::rotation(Magnum::Math::Rad<T>(angle), normalizedAxis);
54 return Matrix4Base<T>::rotationX(Magnum::Math::Rad<T>(angle));
59 return Matrix4Base<T>::rotationY(Magnum::Math::Rad<T>(angle));
64 return Matrix4Base<T>::rotationZ(Magnum::Math::Rad<T>(angle));
69 return Matrix4Base<T>::reflection(normal);
74 return Matrix4Base<T>::shearingXY(amountX, amountY);
79 return Matrix4Base<T>::shearingXZ(amountX, amountZ);
84 return Matrix4Base<T>::shearingYZ(amountY, amountZ);
95 return Matrix4Base<T>::orthographicProjection(size, near, far);
106 return Matrix4Base<T>::perspectiveProjection(size, near, far);
118 return Matrix4Base<T>::perspectiveProjection(Magnum::Math::Rad<T>(fov), aspectRatio, near, far);
130 return Matrix4Base<T>::perspectiveProjection(bottomLeft, topRight, near, far);
141 return Matrix4Base<T>::lookAt(eye, target,
up);
149 constexpr TMatrix4() noexcept: Matrix4Base<T>() {}
150 constexpr TMatrix4(
const TVector4<T>& first,
const TVector4<T>& second,
const TVector4<T>& third,
const TVector4<T>& fourth)
noexcept:
151 Matrix4Base<T>(first, second, third, fourth) {}
152 constexpr explicit TMatrix4(T value)
noexcept: Matrix4Base<T>{value} {}
153 template<std::
size_t otherSize>
constexpr explicit TMatrix4(
const TMatrixS<otherSize, T>& other)
noexcept: Matrix4Base<T>{other} {}
154 constexpr TMatrix4(
const TMatrix4<T>& other)
noexcept: Matrix4Base<T>(other) {}
219 MAGNUM_BASE_MATRIX_CAST_METHODS(4,
TMatrix4, Matrix4Base)
Definition tfMatrix3.h:35
Definition tfMatrix4.h:35
static constexpr TMatrix4< T > from(const TMatrix3< T > &rotationScaling, const TVector3< T > &translation)
Definition tfMatrix4.h:145
static TMatrix4< T > rotationZ(T angle)
Definition tfMatrix4.h:63
static constexpr TMatrix4< T > shearingYZ(T amountY, T amountZ)
Definition tfMatrix4.h:83
TMatrix3< T > rotation() const
Definition tfMatrix4.h:166
T uniformScaling() const
Definition tfMatrix4.h:181
TVector3< T > scalingSquared() const
Definition tfMatrix4.h:172
TVector3< T > & backward()
Definition tfMatrix4.h:199
static constexpr TMatrix4< T > translation(const TVector3< T > &vector)
Definition tfMatrix4.h:38
TVector3< T > & right()
Definition tfMatrix4.h:187
TVector3< T > transformVector(const TVector3< T > &vector) const
Definition tfMatrix4.h:214
constexpr TVector3< T > up() const
Definition tfMatrix4.h:196
T uniformScalingSquared() const
Definition tfMatrix4.h:178
TMatrix3< T > normalMatrix() const
Definition tfMatrix4.h:184
static TMatrix4< T > perspectiveProjection(const TVector2< T > &bottomLeft, const TVector2< T > &topRight, T near, T far)
Initialize a perspective projection matrix.
Definition tfMatrix4.h:129
TVector3< T > & translation()
Definition tfMatrix4.h:205
TMatrix3< T > rotationNormalized() const
Definition tfMatrix4.h:169
static TMatrix4< T > rotation(T angle, const TVector3< T > &normalizedAxis)
Definition tfMatrix4.h:48
TMatrix3< T > rotationShear() const
Definition tfMatrix4.h:163
static constexpr TMatrix4< T > shearingXY(T amountX, T amountY)
Definition tfMatrix4.h:73
static TMatrix4< T > reflection(const TVector3< T > &normal)
Definition tfMatrix4.h:68
constexpr TVector3< T > backward() const
Definition tfMatrix4.h:202
static constexpr TMatrix4< T > shearingXZ(T amountX, T amountZ)
Definition tfMatrix4.h:78
TMatrix4< T > invertedRigid() const
Definition tfMatrix4.h:211
static TMatrix4< T > perspectiveProjection(T fov, T aspectRatio, T near, T far)
Initialize a perspective projection matrix.
Definition tfMatrix4.h:117
static TMatrix4< T > perspectiveProjection(const TVector2< T > &size, T near, T far)
Initialize an perspective projection matrix.
Definition tfMatrix4.h:105
static TMatrix4< T > rotationY(T angle)
Definition tfMatrix4.h:58
TVector3< T > transformPoint(const TVector3< T > &vector) const
Definition tfMatrix4.h:217
constexpr TMatrix3< T > rotationScaling() const
Definition tfMatrix4.h:160
static TMatrix4< T > rotationX(T angle)
Definition tfMatrix4.h:53
TVector3< T > scaling() const
Definition tfMatrix4.h:175
constexpr TVector3< T > translation() const
Definition tfMatrix4.h:208
static constexpr TMatrix4< T > scaling(const TVector3< T > &vector)
Definition tfMatrix4.h:43
bool isRigidTransformation() const
Definition tfMatrix4.h:157
static TMatrix4< T > lookAt(const TVector3< T > &eye, const TVector3< T > &target, const TVector3< T > &up)
Initialize a matrix oriented towards a point.
Definition tfMatrix4.h:140
constexpr TVector3< T > right() const
Definition tfMatrix4.h:190
static TMatrix4< T > orthographicProjection(const TVector2< T > &size, T near, T far)
Initialize an orthographic projection matrix.
Definition tfMatrix4.h:94
TVector3< T > & up()
Definition tfMatrix4.h:193
Definition tfVector2.h:35
Definition tfVector3.h:35
Definition tfVector4.h:33
Native Tissue Forge type definitions.
Definition tfMatrix.h:33