<!--
{
  "availability" : [
    "iOS: 16.0.0 -",
    "iPadOS: 16.0.0 -",
    "macCatalyst: 16.0.0 -",
    "macOS: 13.0.0 -",
    "tvOS: 16.0.0 -",
    "visionOS: 1.0.0 -",
    "watchOS: 9.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "Spatial",
  "identifier" : "/documentation/Spatial/Pose3D",
  "metadataVersion" : "0.1.0",
  "role" : "Structure",
  "symbol" : {
    "kind" : "Structure",
    "modules" : [
      "Spatial"
    ],
    "preciseIdentifier" : "c:@SA@SPPose3D"
  },
  "title" : "Pose3D"
}
-->

# Pose3D

A structure that contains a 3D position and a 3D rotation.

```
struct Pose3D
```

## Topics

### Creating a 3D pose structure

[`init()`](/documentation/Spatial/Pose3D/init())

Creates a pose structure.

[`init?(simd_float4x4)`](/documentation/Spatial/Pose3D/init(_:)-8njy6)

Creates a pose from the specified 4 x 4 single-precision matrix.

[`init?(simd_double4x4)`](/documentation/Spatial/Pose3D/init(_:)-9xspz)

Creates a pose from the specified 4 x 4 double-precision matrix.

[`init(forward: Vector3D, up: Vector3D)`](/documentation/Spatial/Pose3D/init(forward:up:))

Creates a pose with the specified forward and up vectors.

[`init(position: simd_float3, rotation: simd_quatf)`](/documentation/Spatial/Pose3D/init(position:rotation:)-1gu7k)

Creates a pose with the specified single-precision position vector and quaternion.

[`init(position: Point3D, rotation: Rotation3D)`](/documentation/Spatial/Pose3D/init(position:rotation:)-5afaf)

Creates a pose with the specified Spatial position and rotation structures.

[`init(position: Point3D, rotation: Rotation3D)`](/documentation/Spatial/Pose3D/init(position:rotation:)-5vswy)

Creates a pose with the specified single-precision position vector and quaternion.

[`init(position: simd_double3, rotation: simd_quatd)`](/documentation/Spatial/Pose3D/init(position:rotation:)-zc2j)

Creates a pose with the specified double-precision position vector and quaternion.

[`init(position: Point3D, target: Point3D, up: Vector3D)`](/documentation/Spatial/Pose3D/init(position:target:up:))

Returns a pose at the specified position with the rotation towards the target.

[`init?(transform: AffineTransform3D)`](/documentation/Spatial/Pose3D/init(transform:)-2sey4)

Returns a pose with a position and rotation defined by an affine transform.

[`init?(transform: ProjectiveTransform3D)`](/documentation/Spatial/Pose3D/init(transform:)-4go9c)

Returns a pose with a position and rotation defined by a projective transform.

[`static SPPose3D SPPose3DMakeLookAt(SPPoint3D position, SPPoint3D target, SPVector3D up);`](/documentation/Spatial/SPPose3DMakeLookAt-6y4bb)

Returns a pose at the specified position with the rotation towards the target.

[`static SPPose3D SPPose3DMakeLookAt(SPPoint3D target, SPVector3D up);`](/documentation/Spatial/SPPose3DMakeLookAt-8brxe)

[`static SPPose3D SPPose3DMakeLookAt(SPVector3D forward, SPVector3D up);`](/documentation/Spatial/SPPose3DMakeLookAt-dgpp)

[`static SPPose3D SPPose3DMakeWith4x4Matrix(simd_double4x4 matrix);`](/documentation/Spatial/SPPose3DMakeWith4x4Matrix)

Creates a pose from the specified 4 x 4 double-precision matrix.

[`static SPPose3D SPPose3DMakeWithAffineTransform(SPAffineTransform3D transform);`](/documentation/Spatial/SPPose3DMakeWithAffineTransform)

Returns a pose with a position and rotation that an affine transform defines.

[`static SPPose3D SPPose3DMakeWithProjectiveTransform(SPProjectiveTransform3D transform);`](/documentation/Spatial/SPPose3DMakeWithProjectiveTransform)

Returns a pose with a position and rotation that a projective transform defines.

[`static SPPose3D SPPose3DMakeWithVector(simd_double3 position, simd_quatd rotation);`](/documentation/Spatial/SPPose3DMakeWithVector)

Creates a pose with the specified position and rotation vectors.

### Constants

[`static var identity: Pose3D`](/documentation/Spatial/Pose3D/identity)

The identity pose.

[`static const SPPose3D SPPose3DInvalid;`](/documentation/Spatial/SPPose3DInvalid)

A pose that represents an invalid pose.

[`static const SPPose3D SPPose3DIdentity;`](/documentation/Spatial/SPPose3DIdentity)

The identity pose.

### Inspecting a 3D pose’s properties

[`var matrix: simd_double4x4`](/documentation/Spatial/Pose3D/matrix)

The pose’s underlying matrix.

[`var position: Point3D`](/documentation/Spatial/Pose3D/position)

The pose’s position.

[`var rotation: Rotation3D`](/documentation/Spatial/Pose3D/rotation)

The pose’s rotation.

[`var inverse: Pose3D`](/documentation/Spatial/Pose3D/inverse)

The pose’s inverse.

[`static simd_double4x4 SPPose3DGet4x4Matrix(SPPose3D pose);`](/documentation/Spatial/SPPose3DGet4x4Matrix)

Returns the pose’s underlying matrix.

[`static SPPose3D SPPose3DGetInverse(SPPose3D pose);`](/documentation/Spatial/SPPose3DGetInverse)

Returns the affine pose’s inverse.

### Transforming a 3D pose structure

[`func concatenating(ScaledPose3D) -> ScaledPose3D`](/documentation/Spatial/Pose3D/concatenating(_:)-4esra)

Returns a pose that represents the concatenation of a scaled pose and a pose.

[`func concatenating(Pose3D) -> Pose3D`](/documentation/Spatial/Pose3D/concatenating(_:)-6dd2s)

Returns a pose that represents the concatenation of two poses.

[`func flip(along: Axis3D)`](/documentation/Spatial/Pose3D/flip(along:))

Flips a pose along the specified axis.

[`func flipped(along: Axis3D) -> Pose3D`](/documentation/Spatial/Pose3D/flipped(along:))

Returns a pose that results from flipping it along the specified axis.

[`func rotated(by: simd_quatd) -> Pose3D`](/documentation/Spatial/Pose3D/rotated(by:)-10k2a)

Returns a pose that results from rotating with the specified quaternion.

[`func rotated(by: Rotation3D) -> Pose3D`](/documentation/Spatial/Pose3D/rotated(by:)-377u)

Returns a pose that results from applying the specified rotation.

[`static SPPose3D SPPose3DConcatenation(SPPose3D lhs, SPPose3D rhs);`](/documentation/Spatial/SPPose3DConcatenation)

Returns a pose that represents the concatenation of two poses.

[`static SPPose3D SPPose3DFlip(SPPose3D pose, SPAxis flipAxis);`](/documentation/Spatial/SPPose3DFlip)

Flips a pose along the specified axis.

[`static SPPose3D SPPose3DRotate(SPPose3D pose, SPRotation3D rotation);`](/documentation/Spatial/SPPose3DRotate)

Returns a transform that results from rotating with the specified rotation structure.

[`static SPPose3D SPPose3DRotateByQuaternion(SPPose3D pose, simd_quatd quaternion);`](/documentation/Spatial/SPPose3DRotateByQuaternion)

Returns a transform that results from rotating with the specified quaternion.

[`static SPPose3D SPPose3DTranslate(SPPose3D pose, SPSize3D offset);`](/documentation/Spatial/SPPose3DTranslate-6bwqc)

Returns a transform with an origin that’s offset by the specified size structure.

[`static SPPose3D SPPose3DTranslate(SPPose3D pose, SPVector3D offset);`](/documentation/Spatial/SPPose3DTranslate-8v4sq)

Returns a pose with an origin that’s offset by the specified vector.

### Checking characteristics

[`var isIdentity: Bool`](/documentation/Spatial/Pose3D/isIdentity)

A Boolean value that indicates whether the pose is the identity pose.

[`static bool SPPose3DIsIdentity(SPPose3D pose);`](/documentation/Spatial/SPPose3DIsIdentity)

Returns a Boolean value that indicates whether the pose is the identity pose.

[`static bool SPPose3DIsValid(SPPose3D pose);`](/documentation/Spatial/SPPose3DIsValid)

Returns a Boolean value that indicates whether the pose is a valid pose.

### Comparing values

[`func isApproximatelyEqual(to: Pose3D, tolerance: Double) -> Bool`](/documentation/Spatial/Pose3D/isApproximatelyEqual(to:tolerance:))

Returns a Boolean value that indicates whether two poses are equal within a specified tolerance.

[`static func == (Pose3D, Pose3D) -> Bool`](/documentation/Spatial/Pose3D/==(_:_:))

Returns a Boolean value that indicates whether two values are equal.

[`static bool SPPose3DEqualToPose(SPPose3D pose1, SPPose3D pose2);`](/documentation/Spatial/SPPose3DEqualToPose)

Returns a Boolean value that indicates whether two values are equal.

[`static bool SPPose3DAlmostEqualToPose(SPPose3D p1, SPPose3D p2, double tolerance);`](/documentation/Spatial/SPPose3DAlmostEqualToPose-21t5f)

Returns a Boolean value that indicates whether two poses are equal within a specified tolerance.

[`static bool SPPose3DAlmostEqualToPose(SPPose3D p1, SPPose3D p2);`](/documentation/Spatial/SPPose3DAlmostEqualToPose-9hr1m)

### Applying arithmetic operations

[`static func * (Pose3D, Pose3D) -> Pose3D`](/documentation/Spatial/Pose3D/*(_:_:))

Returns the concatenation of two poses.

[`static func *= (inout Pose3D, Pose3D)`](/documentation/Spatial/Pose3D/*=(_:_:))

Concatenates two poses and stores the result in the left-hand-side variable.

### Deprecated symbols

[`init?(matrix: simd_float4x4)`](/documentation/Spatial/Pose3D/init(matrix:)-63uwf)

[`init?(matrix: simd_double4x4)`](/documentation/Spatial/Pose3D/init(matrix:)-6698w)

### Initializers

[`init(Pose3DFloat)`](/documentation/Spatial/Pose3D/init(_:)-6u9lt)

Returns a double-precision pose from a single-precision pose.

### Default Implementations

[CustomReflectable Implementations](/documentation/Spatial/Pose3D/CustomReflectable-Implementations)

[Decodable Implementations](/documentation/Spatial/Pose3D/Decodable-Implementations)

[Encodable Implementations](/documentation/Spatial/Pose3D/Encodable-Implementations)

[Equatable Implementations](/documentation/Spatial/Pose3D/Equatable-Implementations)

[Hashable Implementations](/documentation/Spatial/Pose3D/Hashable-Implementations)

[ProjectiveTransformable3D Implementations](/documentation/Spatial/Pose3D/ProjectiveTransformable3D-Implementations)

[Rotatable3D Implementations](/documentation/Spatial/Pose3D/Rotatable3D-Implementations)

## Relationships

### Conforms To

[`Rotatable3D`](/documentation/Spatial/Rotatable3D)

[`SendableMetatype`](/documentation/Swift/SendableMetatype)

[`Translatable3DProtocol`](/documentation/Spatial/Translatable3DProtocol)

[`Encodable`](/documentation/Swift/Encodable)

[`Copyable`](/documentation/Swift/Copyable)

[`Hashable`](/documentation/Swift/Hashable)

[`Translatable3D`](/documentation/Spatial/Translatable3D)

[`Equatable`](/documentation/Swift/Equatable)

[`Rotatable3DProtocol`](/documentation/Spatial/Rotatable3DProtocol)

[`Sendable`](/documentation/Swift/Sendable)

[`ProjectiveTransformable3D`](/documentation/Spatial/ProjectiveTransformable3D)

[`Escapable`](/documentation/Swift/Escapable)

[`Decodable`](/documentation/Swift/Decodable)

[`CustomStringConvertible`](/documentation/Swift/CustomStringConvertible)

[`CustomReflectable`](/documentation/Swift/CustomReflectable)

[`SpatialTypeProtocol`](/documentation/Spatial/SpatialTypeProtocol)

---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)