---
name: "SoComposeRotation"
section: "3iv"
platform: "linux"
package: "inventor-doc"
version: "2.1.6+ds-2"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/SoComposeRotation/3iv"
---

# SoComposeRotation(3iv)

composes a rotation from axis and angle values

## NAME

SoComposeRotation — composes a rotation from axis and angle values

## INHERITS FROM

SoBase \> SoFieldContainer \> SoEngine \> SoComposeRotation

## SYNOPSIS

**#include \<Inventor/engines/SoCompose.h\>**

Inputs from class SoComposeRotation:

**SoMFVec3f**	**axis**\
 **SoMFFloat**	**angle**

Outputs from class SoComposeRotation:

**(SoMFRotation)**	**rotation**

Methods from class SoComposeRotation:

	**SoComposeRotation()**

Methods from class SoEngine:

**static SoType**	**getClassTypeId()**\
 **virtual int**	**getOutputs(SoEngineOutputList &list) const**\
 **SoEngineOutput \***	**getOutput(const SbName &outputName) const**\
 **SbBool**	**getOutputName(const SoEngineOutput \*output, SbName &outputName) const**\
 **SoEngine \***	**copy() const**\
 **static SoEngine \***	**getByName(const SbName &name)**\
 **static int**	**getByName(const SbName &name, SoEngineList &list)**

Methods from class SoFieldContainer:

**void**	**setToDefaults()**\
 **SbBool**	**hasDefaultValues() const**\
 **SbBool**	**fieldsAreEqual(const SoFieldContainer \*fc) const**\
 **void**	**copyFieldValues(const SoFieldContainer \*fc, SbBool copyConnections = FALSE)**\
 **SbBool**	**set(const char \*fieldDataString)**\
 **void**	**get(SbString &fieldDataString)**\
 **virtual int**	**getFields(SoFieldList &resultList) const**\
 **virtual SoField \***	**getField(const SbName &fieldName) const**\
 **SbBool**	**getFieldName(const SoField \*field, SbName &fieldName) const**\
 **SbBool**	**isNotifyEnabled() const**\
 **SbBool**	**enableNotify(SbBool flag)**

Methods from class SoBase:

**void**	**ref()**\
 **void**	**unref() const**\
 **void**	**unrefNoDelete() const**\
 **void**	**touch()**\
 **virtual SoType**	**getTypeId() const**\
 **SbBool**	**isOfType(SoType type) const**\
 **virtual void**	**setName(const SbName &name)**\
 **virtual SbName**	**getName() const**

## DESCRIPTION

**This engine has two inputs, representing an axis** of rotation and a rotation **angle** in radians. As output, the engine composes the inputs into a rotation field.

The input fields can have multiple values, allowing the engine to compose several rotations in parallel. Some inputs may have more values than others. In such cases, the last value of the shorter inputs will be repeated as necessary.

## INPUTS

**SoMFVec3f**	**axis**\
 Axis of rotation.

**SoMFFloat**	**angle**\
 Angle of rotation.

## OUTPUTS

**(SoMFRotation)**	**rotation**\
 Rotation field, defined by the inputs.

## METHODS

	**SoComposeRotation()**\
 Constructor

## FILE FORMAT/DEFAULTS

```
ComposeRotation {
axis	0 0 1
angle	0
}
```

## SEE ALSO

**SoComposeRotationFromTo, SoDecomposeRotation, SoEngineOutput**
