В мире 3D-графики матрицы simdTransform
4x4 - это обычный способ работы с перемещением, вращением, масштабированием, сдвигом и проекцией 3D-моделей, камер и источников света.
Вот что говорит Apple simdTransform :
simdTransform
представляет собой комбинацию узла 'simdRotation
, simdPosition
и simdScale
свойства.Преобразованием по умолчанию является матрица тождеств .
var simdTransform: simd_float4x4 { get set }
// all these properties are parts of a simdTransform
var simdPosition: simd_float3 { get set }
var simdRotation: simd_float4 { get set }
var simdEulerAngles: simd_float3 { get set }
var simdOrientation: simd_quatf { get set }
var simdScale: simd_float3 { get set }
var simdPivot: simd_float4x4 { get set }
Вот как выглядит матрица тождеств 4x4:
x y z
┌ ┐
x | 1 0 0 0 |
y | 0 1 0 0 |
z | 0 0 1 0 |
| 0 0 0 1 |
└ ┘
...и в коде:
var transform = matrix_identity_float4x4
ПРИМЕР - Изменить позицию, используя матрицу 4x4 :
0 1 2 3 // column index
┌ ┐
| 1 0 0 tx |
| 0 1 0 ty |
| 0 0 1 tz |
| 0 0 0 1 |
└ ┘
... в коде:
var translation = matrix_identity_float4x4
translation.columns.3.x = 10.25
translation.columns.3.y = 20.50
translation.columns.3.z = 30.75
Если вам нужна дополнительная информация о том, как работает матрица преобразования 4x4, посмотрите на это сообщение SO .
PS SIMD означает Отдельная инструкция , Несколько данных .Вы можете прочитать об этом ЗДЕСЬ .