An ARAnchor\'s 4x4 matrix has 4 columns. The fourth column of the matrix contains 3 translate values for x, y, and z coor
ARKit, RealityKit and SceneKit frameworks use
4 x 4Transformation Matricesto translate, rotate, scale and shear 3D objects (just likesimd_float4x4matrix type). Let's see how these matrices look like.
In 3D Graphics we often use a 4x4 Matrix with 16 useful elements. The Identity 4x4 Matrix is as following:
Between those sixteen elements there are 6 different shearing coefficients:
shear XY
shear XZ
shear YX
shear YZ
shear ZX
shear ZY
In Shear Matrix they are as followings:
Because there are no Rotation coefficients at all in this Matrix, six Shear coefficients along with three Scale coefficients allow you rotate 3D objects about X, Y, and Z axis using magical trigonometry (sin and cos).
Here's an example how to rotate 3D object (CCW) about its Z axis using Shear and Scale elements:
Look at 3 different Rotation patterns using Shear and Scale elements:
And, of course, 3 elements for translation (tx,ty,tz) in the 4x4 Matrix are located on the last column:
┌ ┐
| 1 0 0 tx |
| 0 1 0 ty |
| 0 0 1 tz |
| 0 0 0 1 |
└ ┘
The columns' indices in ARKit, SceneKit and RealityKit are:
0,1,2,3.
The fourth column (index 3) is for translation values:
var translation = matrix_identity_float4x4
translation.columns.3.x
translation.columns.3.y
translation.columns.3.z
You can read my illustrated story about MATRICES on Medium.
Values located in the bottom row of a 4x4 matrix is used for perspective projection.
And, of course, you need to see an example of how to setup an orthographic projection.