template<class T>
Magnum::SceneGraph::BasicRigidMatrixTransformation3D class

Three-dimensional rigid transformation implemented using matrices.

Unlike BasicMatrixTransformation3D this class allows only rotation, reflection and translation (no scaling or setting arbitrary transformations). This allows to use Math::Matrix4::invertedRigid() for faster computation of inverse transformations.

Base classes

template<class T>
class AbstractBasicTranslationRotation3D<T>
Base transformation for three-dimensional scenes supporting translation and rotation.

Public types

using DataType = Math::Matrix4<T>
Underlying transformation type.

Public functions

auto transformation() const -> Math::Matrix4<T>
Object transformation.
auto setTransformation(const Math::Matrix4<T>& transformation) -> Object<BasicRigidMatrixTransformation3D<T>>&
Set transformation.
auto resetTransformation() -> Object<BasicRigidMatrixTransformation3D<T>>&
Reset object transformation.
auto normalizeRotation() -> Object<BasicRigidMatrixTransformation3D<T>>&
Normalize rotation part.
auto transform(const Math::Matrix4<T>& transformation) -> Object<BasicRigidMatrixTransformation3D<T>>&
Transform the object.
auto transformLocal(const Math::Matrix4<T>& transformation) -> Object<BasicRigidMatrixTransformation3D<T>>&
Transform the object as a local transformation.
auto translate(const Math::Vector3<T>& vector) -> Object<BasicRigidMatrixTransformation3D<T>>&
Translate the object.
auto translateLocal(const Math::Vector3<T>& vector) -> Object<BasicRigidMatrixTransformation3D<T>>&
Translate the object as a local transformation.
auto rotate(const Math::Quaternion<T>& quaternion) -> Object<BasicRigidMatrixTransformation3D<T>>& new in 2020.06
Rotate the object using a quaternion.
auto rotateLocal(const Math::Quaternion<T>& quaternion) -> Object<BasicRigidMatrixTransformation3D<T>>& new in 2020.06
Rotate the object using a quaternion as a local transformation.
auto rotate(Math::Rad<T> angle, const Math::Vector3<T>& normalizedAxis) -> Object<BasicRigidMatrixTransformation3D<T>>&
Rotate the object.
auto rotateLocal(Math::Rad<T> angle, const Math::Vector3<T>& normalizedAxis) -> Object<BasicRigidMatrixTransformation3D<T>>&
Rotate the object as a local transformation.
auto rotateX(Math::Rad<T> angle) -> Object<BasicRigidMatrixTransformation3D<T>>&
Rotate the object around X axis.
auto rotateXLocal(Math::Rad<T> angle) -> Object<BasicRigidMatrixTransformation3D<T>>&
Rotate the object around X axis as a local transformation.
auto rotateY(Math::Rad<T> angle) -> Object<BasicRigidMatrixTransformation3D<T>>&
Rotate the object around Y axis.
auto rotateYLocal(Math::Rad<T> angle) -> Object<BasicRigidMatrixTransformation3D<T>>&
Rotate the object around Y axis as a local transformation.
auto rotateZ(Math::Rad<T> angle) -> Object<BasicRigidMatrixTransformation3D<T>>&
Rotate the object around Z axis.
auto rotateZLocal(Math::Rad<T> angle) -> Object<BasicRigidMatrixTransformation3D<T>>&
Rotate the object around Z axis as a local transformation.
auto reflect(const Math::Vector3<T>& normal) -> Object<BasicRigidMatrixTransformation3D<T>>&
Reflect the object.
auto reflectLocal(const Math::Vector3<T>& normal) -> Object<BasicRigidMatrixTransformation3D<T>>&
Reflect the object as a local transformation.

Function documentation

template<class T>
Object<BasicRigidMatrixTransformation3D<T>>& Magnum::SceneGraph::BasicRigidMatrixTransformation3D<T>::setTransformation(const Math::Matrix4<T>& transformation)

Set transformation.

Returns Reference to self (for method chaining)

Expects that the matrix represents rigid transformation.

template<class T>
Object<BasicRigidMatrixTransformation3D<T>>& Magnum::SceneGraph::BasicRigidMatrixTransformation3D<T>::resetTransformation()

Reset object transformation.

Returns Reference to self (for method chaining)

template<class T>
Object<BasicRigidMatrixTransformation3D<T>>& Magnum::SceneGraph::BasicRigidMatrixTransformation3D<T>::normalizeRotation()

Normalize rotation part.

Returns Reference to self (for method chaining)

Normalizes the rotation part using Math::Algorithms::gramSchmidtOrthonormalize() to prevent rounding errors when rotating the object subsequently.

template<class T>
Object<BasicRigidMatrixTransformation3D<T>>& Magnum::SceneGraph::BasicRigidMatrixTransformation3D<T>::transform(const Math::Matrix4<T>& transformation)

Transform the object.

Returns Reference to self (for method chaining)

Expects that the matrix represents rigid transformation.

template<class T>
Object<BasicRigidMatrixTransformation3D<T>>& Magnum::SceneGraph::BasicRigidMatrixTransformation3D<T>::transformLocal(const Math::Matrix4<T>& transformation)

Transform the object as a local transformation.

Similar to the above, except that the transformation is applied before all others.

template<class T>
Object<BasicRigidMatrixTransformation3D<T>>& Magnum::SceneGraph::BasicRigidMatrixTransformation3D<T>::translate(const Math::Vector3<T>& vector)

Translate the object.

Returns Reference to self (for method chaining)

Same as calling transform() with Math::Matrix4::translation().

template<class T>
Object<BasicRigidMatrixTransformation3D<T>>& Magnum::SceneGraph::BasicRigidMatrixTransformation3D<T>::translateLocal(const Math::Vector3<T>& vector)

Translate the object as a local transformation.

Similar to the above, except that the transformation is applied before all others. Same as calling transformLocal() with Math::Matrix4::translation().

template<class T>
Object<BasicRigidMatrixTransformation3D<T>>& Magnum::SceneGraph::BasicRigidMatrixTransformation3D<T>::rotate(const Math::Quaternion<T>& quaternion) new in 2020.06

Rotate the object using a quaternion.

Parameters
quaternion Normalized quaternion
Returns Reference to self (for method chaining)

Expects that the quaternion is normalized.

template<class T>
Object<BasicRigidMatrixTransformation3D<T>>& Magnum::SceneGraph::BasicRigidMatrixTransformation3D<T>::rotateLocal(const Math::Quaternion<T>& quaternion) new in 2020.06

Rotate the object using a quaternion as a local transformation.

Similar to the above, except that the transformation is applied before all others.

template<class T>
Object<BasicRigidMatrixTransformation3D<T>>& Magnum::SceneGraph::BasicRigidMatrixTransformation3D<T>::rotate(Math::Rad<T> angle, const Math::Vector3<T>& normalizedAxis)

Rotate the object.

Parameters
angle Angle (counterclockwise)
normalizedAxis Normalized rotation axis
Returns Reference to self (for method chaining)

Same as calling transform() with Math::Matrix4::rotation().

template<class T>
Object<BasicRigidMatrixTransformation3D<T>>& Magnum::SceneGraph::BasicRigidMatrixTransformation3D<T>::rotateLocal(Math::Rad<T> angle, const Math::Vector3<T>& normalizedAxis)

Rotate the object as a local transformation.

Similar to the above, except that the transformation is applied before all others. Same as calling transformLocal() with Math::Matrix4::rotation().

template<class T>
Object<BasicRigidMatrixTransformation3D<T>>& Magnum::SceneGraph::BasicRigidMatrixTransformation3D<T>::rotateX(Math::Rad<T> angle)

Rotate the object around X axis.

Parameters
angle Angle (counterclockwise)
Returns Reference to self (for method chaining)

Same as calling transform() with Math::Matrix4::rotationX().

template<class T>
Object<BasicRigidMatrixTransformation3D<T>>& Magnum::SceneGraph::BasicRigidMatrixTransformation3D<T>::rotateXLocal(Math::Rad<T> angle)

Rotate the object around X axis as a local transformation.

Similar to the above, except that the transformation is applied before all others. Same as calling transformLocal() with Math::Matrix4::rotationX().

template<class T>
Object<BasicRigidMatrixTransformation3D<T>>& Magnum::SceneGraph::BasicRigidMatrixTransformation3D<T>::rotateY(Math::Rad<T> angle)

Rotate the object around Y axis.

Parameters
angle Angle (counterclockwise)
Returns Reference to self (for method chaining)

Same as calling transform() with Math::Matrix4::rotationY().

template<class T>
Object<BasicRigidMatrixTransformation3D<T>>& Magnum::SceneGraph::BasicRigidMatrixTransformation3D<T>::rotateYLocal(Math::Rad<T> angle)

Rotate the object around Y axis as a local transformation.

Similar to the above, except that the transformation is applied before all others. Same as calling transformLocal() with Math::Matrix4::rotationY().

template<class T>
Object<BasicRigidMatrixTransformation3D<T>>& Magnum::SceneGraph::BasicRigidMatrixTransformation3D<T>::rotateZ(Math::Rad<T> angle)

Rotate the object around Z axis.

Parameters
angle Angle (counterclockwise)
Returns Reference to self (for method chaining)

Same as calling transform() with Math::Matrix4::rotationZ().

template<class T>
Object<BasicRigidMatrixTransformation3D<T>>& Magnum::SceneGraph::BasicRigidMatrixTransformation3D<T>::rotateZLocal(Math::Rad<T> angle)

Rotate the object around Z axis as a local transformation.

Similar to the above, except that the transformation is applied before all others. Same as calling transformLocal() with Math::Matrix4::rotationZ().

template<class T>
Object<BasicRigidMatrixTransformation3D<T>>& Magnum::SceneGraph::BasicRigidMatrixTransformation3D<T>::reflect(const Math::Vector3<T>& normal)

Reflect the object.

Parameters
normal Normal of the plane through which to reflect (normalized)
Returns Reference to self (for method chaining)

Same as calling transform() with Math::Matrix4::reflection().

template<class T>
Object<BasicRigidMatrixTransformation3D<T>>& Magnum::SceneGraph::BasicRigidMatrixTransformation3D<T>::reflectLocal(const Math::Vector3<T>& normal)

Reflect the object as a local transformation.

Similar to the above, except that the transformation is applied before all others. Same as calling transformLocal() with Math::Matrix4::reflection().