Это потому, что вы выводите всю запись. Вы можете просто пойти (предпочитаете forEach итерировать вручную):
this.carbs_value.forEach(record => console.log({ carbs: record.carbs }));
Если вы хотите сохранить в новый массив, вы можете использовать map :
const filtered = this.carbs_value.map(record => { carbs: record.carbs });
console.log(filtered);
Единичная матрица, с точки зрения проекции и modelview матриц, по существу сбрасывает матрицу назад к ее состоянию по умолчанию.
, Поскольку Вы, надо надеяться, знаете, glTranslate
и glRotate
всегда относительно текущего состояния матрицы. Так, например, если Вы звоните glTranslate
, Вы переводите из текущего 'положения' матрицы, не из источника. Но если Вы хотите запуститься в источнике, именно тогда Вы звоните glLoadIdentity()
, и затем Вы можете glTranslate
от матрицы, которая теперь расположена в источнике, или glRotate
от матрицы, которая теперь ориентирована в направлении по умолчанию.
я думаю ответ Блага, что это - эквивалент 1, не точно корректно. Матрица на самом деле похожа на это:
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
, Который является единичной матрицей. Благо корректно, математически, который любая матрица умножила с той матрицей (или матрица, которая похожа на это; диагональные, все остальное 0s), приведет к исходной матрице, но я не полагаю, что он объяснил, почему это важно.
причина, почему это важно, состоит в том, потому что OpenGL умножает все положения и вращения через каждую матрицу; таким образом, например, при рисовании полигона (glBegin(GL_FACE)
, некоторые точки, glEnd()
), он переводит его в "мировое пространство" путем умножения его с MODELVIEW и затем переводит его от 3D до 2D путем умножения его с матрицей ПРОЕКТА, и это дает ему 2D точки на экране, наряду с глубиной (с экрана 'камера'), который он использует для рисования пикселей. Но когда одна из этих матриц является единичной матрицей, точки умножаются с единичной матрицей и поэтому не изменяются, таким образом, матрица не имеет никакого эффекта; это не переводит точки, это не поворачивает их, это оставляет их как есть.
я надеюсь, что это разъясняется немного больше!
Единичная матрица является эквивалентом 1 для числа. Поскольку Вы знаете любое число, которое умножается с 1, самостоятельно (e.g. A x 1 = A)
,
, то же самое идет для матрицы ( MatrixA x IdentityMatrix = MatrixA)
.
Настолько загружающаяся единичная матрица является способом инициализировать Вашу матрицу к правильному состоянию перед умножением дальнейших матриц в матричный стек.
glMatrixMode(GL_PROJECTION)
: соглашения с матрицами, используемыми перспективным преобразованием или ортогональным преобразованием.
glMatrixMode(GL_MODELVIEW)
: соглашения с матрицами, используемыми преобразованием образцового представления. Таким образом, для преобразования объекта (иначе модель) к координатному пространству представления (или пространство камеры).
Единичная матрица используется для "инициализирования" матрицы к нормальному значению по умолчанию.
Одна важная вещь понять состоит в том, что умножения матриц в некотором смысле, дополнение. Например, при взятии матрицы, которая запускается с единичной матрицы, умножьте ее времена матрица вращения, затем умножьте ее времена масштабирующаяся матрица, Вы заканчиваете с матрицей, которая поворачивает и масштабирует матрицы, против которых она умножается.