I'm trying to rotate a cube around its z-axis but I can't find how.
Is there a way in RealityKit to do this?
I'm trying to rotate a cube around its z-axis but I can't find how.
Is there a way in RealityKit to do this?
In RealityKit there are, at least, three ways to rotate an object around single axis.
In each example we rotate an object counterclockwise (CCW).
let boxScene = try! Experience.loadBox()
boxScene.steelBox?.orientation = simd_quatf(angle: .pi/4, /* 45 Degrees */
axis: [0,0,1]) /* About Z axis */
boxScene.steelBox?.transform = Transform(pitch: 0,
yaw: 0,
roll: .pi/4) /* Around Z axis */
pitch, yaw and roll are rotations about X, Y and Z axis expressed in radians.
let a: Float = cos(.pi/4)
let b: Float = sin(.pi/4)
let matrix = float4x4([ a, b, 0, 0 ], /* column 0 */
[-b, a, 0, 0 ], /* column 1 */
[ 0, 0, 1, 0 ], /* column 2 */
[ 0, 0, 0, 1 ]) /* column 3 */
boxAnchor.steelBox?.setTransformMatrix(matrix, relativeTo: nil)
Visual representation of rotation matrix looks like this:
let a: Float = cos(.pi/4)
let b: Float = sin(.pi/4)
// 0 1 2 3
┌ ┐
| a -b 0 0 |
| b a 0 0 |
| 0 0 1 0 |
| 0 0 0 1 |
└ ┘
If you wanna know more about Rotation Matrices, read this post.