Xcode simd - problema con la matriz de traducción y rotación Ejemplo
Not solo está usando la columna principal frente a la fila principal contra-intuitiva, la documentación de Apple sobre "Trabajar con matrices" exacerba aún más la confusión por sus ejemplos de "construir" una "Matriz de traducción" y una "Matriz de rotación" en 2D.
Translate Matrix según la documentación de Apple ()
Translate Una matriz de traducción toma la siguiente forma:
1 0 0
0 1 0
tx ty 1
La biblioteca simd proporciona constantes para matrices de identidad (matrices con unos a lo largo de la diagonal y ceros en otros lugares). La matriz de identidad de flotante 3 x 3 es matrix_identity_float3x3.
La siguiente función devuelve una matriz simd_float3x3 utilizando los valores de traducción tx y ty especificados configurando los elementos en una matriz de identidad:
func makeTranslationMatrix(tx: Float, ty: Float) -> simd_float3x3 {
var matrix = matrix_identity_float3x3
matrix[0, 2] = tx
matrix[1, 2] = ty
return matrix
}
Mi problema con él
La línea de códigomatrix[0, 2] = tx
establece el valor de la primera columna y la tercera fila entx
. let translationMatrix = makeTranslationMatrix(tx: 1, ty: 3)
e imprimir la segunda columnaprint(translationMatrix.columns.2)
rendiráfloat3(0.0, 0.0, 1.0)
. Estoy muy confundido con respecto a por qué es la última fila que contiene los valores de traducción, en lugar de la columna. Esta convención no se usa cuando se usaSCNMatrix4MakeTranslation
y creando unasimd_float4x4
fuera deSCNMatrix4
objeto.
var A = SCNMatrix4MakeTranslation(1,2,3)
var Asimd = simd_float4x4(A)
A.m41 // 1
A.m42 // 2
A.m43 // 3
A.m44 // 1
Asimd.columns.3 // float4(1.0, 2.0, 3.0, 1.0)
AmbosSCNMatrix4
ysimd_float4x4
siga elcolumna mayor convenio de denominación. En el ejemplo 2D de Apple, es la última fila que contiene los valores de traducción, mientras que conSCNMatrix4
y convertir asimd_float4x4
, es la última columna que contiene los valores de traducción. El ejemplo de Apple parece estar haciendo lo mismo con las Matrices de rotación también.
¿Qué me estoy perdiendo