> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.nvidia.com/holoscan/sdk-user-guide/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.nvidia.com/holoscan/sdk-user-guide/_mcp/server.

# holoscan::Pose3

> Class representing 3D transformations (rigid body motion in 3D).

```cpp showLineNumbers={false}
template <typename K>
struct Pose3
```

Class representing 3D transformations (rigid body motion in 3D).

This class represents elements of the SE(3) group, which combines 3D rotations and translations. Each pose consists of a rotation component ([SO3](../classes/so3)) and a translation vector in 3D space.

```cpp showLineNumbers={false}
#include <holoscan/pose3.hpp>
```

**Template parameters**

**`K`** `typename`

Scalar type (typically float or double).

---

---

## Constructors

### Pose3 \[#pose3]

#### Default

```cpp showLineNumbers={false}
holoscan::Pose3<K>::Pose3()
```

Default constructor creates identity pose.

#### Copy

```cpp showLineNumbers={false}
holoscan::Pose3<K>::Pose3(
    const SO3<K> &rotation,
    const Vector3<K> &translation
)
```

Constructor from rotation and translation components.

**Parameters**

**`rotation`** `const SO3<K> &`

Rotation component.

---

**`translation`** `const Vector3<K> &`

Translation component.

---

---

## Methods

### inverse \[#inverse]

```cpp showLineNumbers={false}
Pose3 holoscan::Pose3<K>::inverse() const
```

Get the inverse transformation.

**Returns:** Inverse transformation.

### matrix \[#matrix]

```cpp showLineNumbers={false}
Matrix4<K> holoscan::Pose3<K>::matrix() const
```

Get the 4×4 homogeneous transformation matrix representation.

**Returns:** 4×4 transformation matrix.

### cast \[#cast]

#### Const (1)

```cpp showLineNumbers={false}
template <typename S>
Pose3<S> holoscan::Pose3<K>::cast() const
```

Cast to a different scalar type.

**Returns:** Pose cast to the target type.

**Template parameters**

**`S`** `typename`

Target scalar type.

---

#### Const (2)

```cpp showLineNumbers={false}
template <typename S>
const Pose3 & holoscan::Pose3<K>::cast() const
```

Cast to the same scalar type (no-op).

**Returns:** Reference to this pose.

**Template parameters**

**`S`** `typename`

Target scalar type (same as K).

---

### to\_pose2\_xy \[#topose2xy]

```cpp showLineNumbers={false}
Pose2<K> holoscan::Pose3<K>::to_pose2_xy() const
```

Convert to a 2D pose in the XY plane.

**Returns:** 2D pose representing the XY components of this 3D pose.

### pow \[#pow]

```cpp showLineNumbers={false}
Pose3 holoscan::Pose3<K>::pow(
    K exponent
) const
```

Compute the power of the transformation.

This computes the transformation raised to the given exponent using exponential coordinates and matrix exponentiation. The implementation handles the general case by aligning the rotation axis with the Z-axis.

**Returns:** Transformation raised to the given power.

**Parameters**

**`exponent`** `K`

Power to raise the transformation to.

---

---

## Static methods

### identity \[#identity]

```cpp showLineNumbers={false}
static Pose3 holoscan::Pose3<K>::identity()
```

Create the identity transformation.

**Returns:** Identity transformation (no rotation or translation).

### from\_translation \[#fromtranslation]

#### Create a pure translation transformation

```cpp showLineNumbers={false}
static Pose3 holoscan::Pose3<K>::from_translation(
    const Vector3<K> &translation
)
```

Create a pure translation transformation.

**Returns:** Translation-only transformation.

**Parameters**

**`translation`** `const Vector3<K> &`

Translation vector.

---

#### Overload 2

```cpp showLineNumbers={false}
static Pose3 holoscan::Pose3<K>::from_translation(
    K x,
    K y,
    K z
)
```

Create a pure translation transformation from components.

**Returns:** Translation-only transformation.

**Parameters**

**`x`** `K`

X component of translation.

---

**`y`** `K`

Y component of translation.

---

**`z`** `K`

Z component of translation.

---

### from\_rotation \[#fromrotation]

```cpp showLineNumbers={false}
static Pose3 holoscan::Pose3<K>::from_rotation(
    const Vector3<K> &axis,
    K angle
)
```

Create a pure rotation transformation.

**Returns:** Rotation-only transformation.

**Parameters**

**`axis`** `const Vector3<K> &`

Rotation axis (will be normalized internally).

---

**`angle`** `K`

Rotation angle in radians.

---

### from\_pose2\_xy \[#frompose2xy]

```cpp showLineNumbers={false}
static Pose3 holoscan::Pose3<K>::from_pose2_xy(
    const Pose2<K> &pose
)
```

Create a 3D pose from a 2D pose in the XY plane.

**Returns:** 3D pose with Z translation = 0 and rotation around Z-axis.

**Parameters**

**`pose`** `const Pose2<K> &`

2D pose in the XY plane.

---

### from\_matrix \[#frommatrix]

```cpp showLineNumbers={false}
static Pose3 holoscan::Pose3<K>::from_matrix(
    const Matrix4<K> &matrix
)
```

Create a pose from a 4×4 transformation matrix.

**Returns:** Pose represented by the matrix.

**Parameters**

**`matrix`** `const Matrix4<K> &`

4×4 Homogeneous transformation matrix.

---

---

## Types

### Typedefs

| Name     | Definition |
| -------- | ---------- |
| `Scalar` | `K`        |

---

## Member variables

| Name                          | Type           | Description            |
| ----------------------------- | -------------- | ---------------------- |
| `kDimension` static constexpr | `int`          |                        |
| `rotation`                    | `SO3< K >`     | Rotation component.    |
| `translation`                 | `Vector3< K >` | Translation component. |