Результат флаттера matrix4.toString()

avatar
Jaehyung Kim
9 августа 2021 в 01:10
33
1
1
Matrix4 matrix = Matrix4(
   0, 0, 1, 0,
   -1, 0, 0, 0,
   0, -1, 0, 0,
   0, 0, 0, 1
);

print(matrix);

Результат печати показан ниже.

I/flutter (15723): [0] 0.0,-1.0,0.0,0.0
I/flutter (15723): [1] 0.0,0.0,-1.0,0.0
I/flutter (15723): [2] 1.0,0.0,0.0,0.0
I/flutter (15723): [3] 0.0,0.0,0.0,1.0

Означает ли [0] в журнале столбец [0] ?
или строки и столбцы меняются местами при инициализации?

я использую флаттер v1.22.4

Источник

Ответы (1)

avatar
enzo
9 августа 2021 в 01:19
1

По вашему первому вопросу, toString исходный код метода отображает

@override
String toString() => '[0] ${getRow(0)}\n[1] ${getRow(1)}\n'
    '[2] ${getRow(2)}\n[3] ${getRow(3)}\n';

Таким образом, каждое число соответствует соответствующему индексу строки.

По вашему второму вопросу в документации класса говорится:

4D Матрица. Значения хранятся в основном порядке столбцов.

На странице Википедии для основного порядка столбцов написано:

В упорядочении по строкам последовательные элементы строки располагаются рядом друг с другом, тогда как то же самое верно для последовательных элементов столбца в порядке упорядочения по столбцам.

Вы можете думать об этом как о "перестановке строки и столбца", но это просто неинтуитивная стратегия хранения.