# template<class T>Magnum::SceneGraph::BasicMatrixTransformation3D class

Three-dimensional transformation implemented using matrices.

### Contents

• Reference

Uses Math::Matrix4 as underlying transformation type.

## Base classes

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

## 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<BasicMatrixTransformation3D<T>>&
Set transformation.
auto resetTransformation() -> Object<BasicMatrixTransformation3D<T>>&
Reset object transformation.
auto transform(const Math::Matrix4<T>& transformation) -> Object<BasicMatrixTransformation3D<T>>&
Transform object.
auto transformLocal(const Math::Matrix4<T>& transformation) -> Object<BasicMatrixTransformation3D<T>>&
Transform object as a local transformation.
auto translate(const Math::Vector3<T>& vector) -> Object<BasicMatrixTransformation3D<T>>&
Translate object.
auto translateLocal(const Math::Vector3<T>& vector) -> Object<BasicMatrixTransformation3D<T>>&
Translate object as a local transformation.
auto rotate(Math::Rad<T> angle, const Math::Vector3<T>& normalizedAxis) -> Object<BasicMatrixTransformation3D<T>>&
Rotate object.
auto rotateLocal(Math::Rad<T> angle, const Math::Vector3<T>& normalizedAxis) -> Object<BasicMatrixTransformation3D<T>>&
Rotate object as a local transformation.
Rotate object around X axis.
Rotate object around X axis as a local transformation.
Rotate object around Y axis.
Rotate object around Y axis as a local transformation.
Rotate object around Z axis.
Rotate object around Z axis as a local transformation.
auto scale(const Math::Vector3<T>& vector) -> Object<BasicMatrixTransformation3D<T>>&
Scale object.
auto scaleLocal(const Math::Vector3<T>& vector) -> Object<BasicMatrixTransformation3D<T>>&
Scale object as a local transformation.
auto reflect(const Math::Vector3<T>& normal) -> Object<BasicMatrixTransformation3D<T>>&
Reflect object.
auto reflectLocal(const Math::Vector3<T>& normal) -> Object<BasicMatrixTransformation3D<T>>&
Reflect object as a local transformation.

## Private functions

) override final virtual
Polymorphic implementation for resetTransformation()
void doRotate(Math::Rad<T> angle, const Math::Vector3<T>& normalizedAxis) override final virtual
Polymorphic implementation for rotate()
void doRotateLocal(Math::Rad<T> angle, const Math::Vector3<T>& normalizedAxis) override final virtual
Polymorphic implementation for rotateLocal()
void doRotateX(Math::Rad<T> angle) override final virtual
Polymorphic implementation for rotateX()
void doRotateXLocal(Math::Rad<T> angle) override final virtual
Polymorphic implementation for rotateXLocal()
void doRotateY(Math::Rad<T> angle) override final virtual
Polymorphic implementation for rotateY()
void doRotateYLocal(Math::Rad<T> angle) override final virtual
Polymorphic implementation for rotateYLocal()
void doRotateZ(Math::Rad<T> angle) override final virtual
Polymorphic implementation for rotateZ()
void doRotateZLocal(Math::Rad<T> angle) override final virtual
Polymorphic implementation for rotateZLocal()
void doScale(const Math::Vector3<T>& vector) override final virtual
Polymorphic implementation for scale()
void doScaleLocal(const Math::Vector3<T>& vector) override final virtual
Polymorphic implementation for scaleLocal()

## Function documentation

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

Set transformation.

Returns Reference to self (for method chaining)

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

Reset object transformation.

Returns Reference to self (for method chaining)

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

Transform object.

Returns Reference to self (for method chaining)

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

Transform object as a local transformation.

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

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

Translate object.

Returns Reference to self (for method chaining)

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

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

Translate 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<BasicMatrixTransformation3D<T>>& Magnum::SceneGraph::BasicMatrixTransformation3D<T>::rotate(Math::Rad<T> angle, const Math::Vector3<T>& normalizedAxis)

Rotate 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<BasicMatrixTransformation3D<T>>& Magnum::SceneGraph::BasicMatrixTransformation3D<T>::rotateLocal(Math::Rad<T> angle, const Math::Vector3<T>& normalizedAxis)

Rotate 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<BasicMatrixTransformation3D<T>>& Magnum::SceneGraph::BasicMatrixTransformation3D<T>::rotateX(Math::Rad<T> angle)

Rotate 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<BasicMatrixTransformation3D<T>>& Magnum::SceneGraph::BasicMatrixTransformation3D<T>::rotateXLocal(Math::Rad<T> angle)

Rotate 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<BasicMatrixTransformation3D<T>>& Magnum::SceneGraph::BasicMatrixTransformation3D<T>::rotateY(Math::Rad<T> angle)

Rotate 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<BasicMatrixTransformation3D<T>>& Magnum::SceneGraph::BasicMatrixTransformation3D<T>::rotateYLocal(Math::Rad<T> angle)

Rotate 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<BasicMatrixTransformation3D<T>>& Magnum::SceneGraph::BasicMatrixTransformation3D<T>::rotateZ(Math::Rad<T> angle)

Rotate 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<BasicMatrixTransformation3D<T>>& Magnum::SceneGraph::BasicMatrixTransformation3D<T>::rotateZLocal(Math::Rad<T> angle)

Rotate 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<BasicMatrixTransformation3D<T>>& Magnum::SceneGraph::BasicMatrixTransformation3D<T>::scale(const Math::Vector3<T>& vector)

Scale object.

Returns Reference to self (for method chaining)

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

### template<class T> Object<BasicMatrixTransformation3D<T>>& Magnum::SceneGraph::BasicMatrixTransformation3D<T>::scaleLocal(const Math::Vector3<T>& vector)

Scale 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::scaling().

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

Reflect 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<BasicMatrixTransformation3D<T>>& Magnum::SceneGraph::BasicMatrixTransformation3D<T>::reflectLocal(const Math::Vector3<T>& normal)

Reflect 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().

### template<class T> void Magnum::SceneGraph::BasicMatrixTransformation3D<T>::doRotateX(Math::Rad<T> angle) override final virtual private

Polymorphic implementation for rotateX()

Default implementation calls rotate() with Math::Vector3::xAxis().

### template<class T> void Magnum::SceneGraph::BasicMatrixTransformation3D<T>::doRotateXLocal(Math::Rad<T> angle) override final virtual private

Polymorphic implementation for rotateXLocal()

Default implementation calls rotateLocal() with Math::Vector3::xAxis().

### template<class T> void Magnum::SceneGraph::BasicMatrixTransformation3D<T>::doRotateY(Math::Rad<T> angle) override final virtual private

Polymorphic implementation for rotateY()

Default implementation calls rotate() with Math::Vector3::yAxis().

### template<class T> void Magnum::SceneGraph::BasicMatrixTransformation3D<T>::doRotateYLocal(Math::Rad<T> angle) override final virtual private

Polymorphic implementation for rotateYLocal()

Default implementation calls rotateLocal() with Math::Vector3::yAxis().

### template<class T> void Magnum::SceneGraph::BasicMatrixTransformation3D<T>::doRotateZ(Math::Rad<T> angle) override final virtual private

Polymorphic implementation for rotateZ()

Default implementation calls rotate() with Math::Vector3::zAxis().

### template<class T> void Magnum::SceneGraph::BasicMatrixTransformation3D<T>::doRotateZLocal(Math::Rad<T> angle) override final virtual private

Polymorphic implementation for rotateZLocal()

Default implementation calls rotateLocal() with Math::Vector3::zAxis().