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

# ScaledPose3D

A structure that contains a position, rotation, and scale.

```
struct ScaledPose3D
```

## Topics

### Creating a 3D scaled-pose structure

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

Creates a scaled pose structure.

[`init?(simd_float4x4)`](/documentation/Spatial/ScaledPose3D/init(_:)-v6ox)

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

[`init?(simd_double4x4)`](/documentation/Spatial/ScaledPose3D/init(_:)-4izkj)

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

[`init(forward: Vector3D, scale: Double, up: Vector3D)`](/documentation/Spatial/ScaledPose3D/init(forward:scale:up:))

Creates a scaled pose with the specified forward and up vectors.

[`init(position: simd_float3, rotation: simd_quatf, scale: Float)`](/documentation/Spatial/ScaledPose3D/init(position:rotation:scale:)-8ndo4)

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

[`init(position: simd_double3, rotation: simd_quatd, scale: Double)`](/documentation/Spatial/ScaledPose3D/init(position:rotation:scale:)-6fom1)

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

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

Returns a scaled pose at the specified position with the rotation toward the target.

[`init(position: Point3D, rotation: Rotation3D, scale: Double)`](/documentation/Spatial/ScaledPose3D/init(position:rotation:scale:)-7ya6f)

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

[`init(position: Point3D, rotation: Rotation3D, scale: Double)`](/documentation/Spatial/ScaledPose3D/init(position:rotation:scale:)-8fyu0)

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

[`init?(transform: AffineTransform3D)`](/documentation/Spatial/ScaledPose3D/init(transform:)-oogv)

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

[`init?(transform: ProjectiveTransform3D)`](/documentation/Spatial/ScaledPose3D/init(transform:)-9s08k)

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

[`static SPScaledPose3D SPScaledPose3DMake(SPPoint3D position, SPRotation3D rotation, double scale);`](/documentation/Spatial/SPScaledPose3DMake-9dbop)

Returns a scaled pose with the specified position, rotation, and scale.

[`static SPScaledPose3D SPScaledPose3DMake(SPPose3D pose, double scale);`](/documentation/Spatial/SPScaledPose3DMake-793r5)

[`static SPScaledPose3D SPScaledPose3DMakeLookAt(SPPoint3D position, SPPoint3D target, double scale, SPVector3D up);`](/documentation/Spatial/SPScaledPose3DMakeLookAt-7bxnk)

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

[`static SPScaledPose3D SPScaledPose3DMakeLookAt(SPPoint3D target, double scale, SPVector3D up);`](/documentation/Spatial/SPScaledPose3DMakeLookAt-8yp17)

[`static SPScaledPose3D SPScaledPose3DMakeLookAt(SPVector3D forward, double scale, SPVector3D up);`](/documentation/Spatial/SPScaledPose3DMakeLookAt-gxlk)

[`static SPScaledPose3D SPScaledPose3DMakeWith4x4Matrix(simd_double4x4 matrix);`](/documentation/Spatial/SPScaledPose3DMakeWith4x4Matrix)

Returns a new scaled pose structure from the specified 4 x 4 matrix.

[`static SPScaledPose3D SPScaledPose3DMakeWithAffineTransform(SPAffineTransform3D transform);`](/documentation/Spatial/SPScaledPose3DMakeWithAffineTransform)

Returns a scaled pose with a position, rotation, and scale that the specified affine transform defines.

[`static SPScaledPose3D SPScaledPose3DMakeWithProjectiveTransform(SPProjectiveTransform3D transform);`](/documentation/Spatial/SPScaledPose3DMakeWithProjectiveTransform)

Returns a scaled pose with a position, rotation, and scale that the specified projective transform defines.

[`static SPScaledPose3D SPScaledPose3DMakeWithVector(simd_double3 position, simd_quatd rotation, double scale);`](/documentation/Spatial/SPScaledPose3DMakeWithVector)

Returns a scaled pose with the specified position, rotation, and scale.

[`static const SPScaledPose3D SPScaledPose3DIdentity;`](/documentation/Spatial/SPScaledPose3DIdentity)

A structure that contains a position, rotation, and scale.

[`static const SPScaledPose3D SPScaledPose3DInvalid;`](/documentation/Spatial/SPScaledPose3DInvalid)

A structure that contains a position, rotation, and scale.

### Inspecting a 3D scaled pose’s properties

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

The scaled pose’s underlying matrix.

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

The scaled pose’s position.

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

The scaled pose’s rotation.

[`var scale: Double`](/documentation/Spatial/ScaledPose3D/scale)

The scaled pose’s scale.

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

The scaled pose’s inverse.

[`var customMirror: Mirror`](/documentation/Spatial/ScaledPose3D/customMirror)

A mirror that reflects the notification.

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

The identity scaled pose.

[`static simd_double4x4 SPScaledPose3DGet4x4Matrix(SPScaledPose3D scaledPose);`](/documentation/Spatial/SPScaledPose3DGet4x4Matrix)

Returns a 4 x 4 matrix that represents the scaled pose’s translation, rotation, and scale.

[`static SPScaledPose3D SPScaledPose3DGetInverse(SPScaledPose3D scaledPose);`](/documentation/Spatial/SPScaledPose3DGetInverse)

Returns a new scaled pose with the inverse matrix of the specified scaled pose.

### Transforming a 3D scaled-pose structure

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

Flips a scaled pose along the specified axis.

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

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

[`func rotated(by: simd_quatd) -> ScaledPose3D`](/documentation/Spatial/ScaledPose3D/rotated(by:)-5mxbl)

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

[`func rotated(by: Rotation3D) -> ScaledPose3D`](/documentation/Spatial/ScaledPose3D/rotated(by:)-x75b)

Returns a scaled pose that results from applying the specified rotation.

[`func concatenating(ScaledPose3D) -> ScaledPose3D`](/documentation/Spatial/ScaledPose3D/concatenating(_:)-c38k)

Returns a scaled pose that represents the concatenation of two scaled poses.

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

Returns a scaled pose that represents the concatenation of two poses.

[`static SPScaledPose3D SPScaledPose3DFlip(SPScaledPose3D scaledPose, SPAxis flipAxis);`](/documentation/Spatial/SPScaledPose3DFlip)

Returns a scaled pose that’s flipped along the specified axis.

[`static SPScaledPose3D SPScaledPose3DRotate(SPScaledPose3D scaledPose, SPRotation3D rotation);`](/documentation/Spatial/SPScaledPose3DRotate)

Returns a scaled pose with a rotation that’s rotated by the specified rotation.

[`static SPScaledPose3D SPScaledPose3DRotateByQuaternion(SPScaledPose3D scaledPose, simd_quatd quaternion);`](/documentation/Spatial/SPScaledPose3DRotateByQuaternion)

Returns a scaled pose with a rotation that’s rotated by the specified quaternion.

[`static SPScaledPose3D SPScaledPose3DTranslate(SPScaledPose3D scaledPose, SPVector3D offset);`](/documentation/Spatial/SPScaledPose3DTranslate)

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

[`static SPScaledPose3D SPScaledPose3DConcatenation(SPScaledPose3D lhs, SPScaledPose3D rhs);`](/documentation/Spatial/SPScaledPose3DConcatenation-7ljg6)

Returns a new scaled pose that’s constructed by concatenating two existing poses.

### Concatenating

[`static SPScaledPose3D SPScaledPose3DConcatenation(SPPose3D lhs, SPScaledPose3D rhs);`](/documentation/Spatial/SPScaledPose3DConcatenation-94ryp)

[`static SPScaledPose3D SPScaledPose3DConcatenation(SPScaledPose3D lhs, SPPose3D rhs);`](/documentation/Spatial/SPScaledPose3DConcatenation-3i5ch)

[`static SPScaledPose3D SPScaledPose3DConcatenation(SPScaledPose3D lhs, SPScaledPose3D rhs);`](/documentation/Spatial/SPScaledPose3DConcatenation-7ljg6)

Returns a new scaled pose that’s constructed by concatenating two existing poses.

### Checking characteristics

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

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

[`static bool SPScaledPose3DIsIdentity(SPScaledPose3D scaledPose);`](/documentation/Spatial/SPScaledPose3DIsIdentity)

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

[`static bool SPScaledPose3DIsValid(SPScaledPose3D pose);`](/documentation/Spatial/SPScaledPose3DIsValid)

Returns a Boolean value that indicates whether a scaled pose structure represents a valid scaled pose.

### Comparing values

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

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

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

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

[`static bool SPScaledPose3DAlmostEqualToPose(SPScaledPose3D p1, SPScaledPose3D p2);`](/documentation/Spatial/SPScaledPose3DAlmostEqualToPose-1qgpl)

[`static bool SPScaledPose3DAlmostEqualToPose(SPScaledPose3D p1, SPScaledPose3D p2, double tolerance);`](/documentation/Spatial/SPScaledPose3DAlmostEqualToPose-4ahe1)

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

[`static bool SPScaledPose3DEqualToPose(SPScaledPose3D scaledPose1, SPScaledPose3D scaledPose2);`](/documentation/Spatial/SPScaledPose3DEqualToPose)

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

### Applying arithmetic operations

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

Returns the concatenation of two scaled poses.

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

Returns the concatenation of a scaled pose and a pose.

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

Returns the concatenation of a pose and a scaled pose.

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

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

### Initializers

[`init(ScaledPose3DFloat)`](/documentation/Spatial/ScaledPose3D/init(_:)-3fa9n)

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

### Default Implementations

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

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

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

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

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

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

## Relationships

### Conforms To

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

---

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)