Что делает glLoadIdentity (), делают в OpenGL?

Это потому, что вы выводите всю запись. Вы можете просто пойти (предпочитаете 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);

130
задан marvinIsSacul 17 July 2019 в 10:36
поделиться

3 ответа

Единичная матрица, с точки зрения проекции и 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 точки на экране, наряду с глубиной (с экрана 'камера'), который он использует для рисования пикселей. Но когда одна из этих матриц является единичной матрицей, точки умножаются с единичной матрицей и поэтому не изменяются, таким образом, матрица не имеет никакого эффекта; это не переводит точки, это не поворачивает их, это оставляет их как есть.

я надеюсь, что это разъясняется немного больше!

138
ответ дан 24 November 2019 в 00:25
поделиться

Единичная матрица является эквивалентом 1 для числа. Поскольку Вы знаете любое число, которое умножается с 1, самостоятельно (e.g. A x 1 = A),

, то же самое идет для матрицы ( MatrixA x IdentityMatrix = MatrixA).

Настолько загружающаяся единичная матрица является способом инициализировать Вашу матрицу к правильному состоянию перед умножением дальнейших матриц в матричный стек.

glMatrixMode(GL_PROJECTION): соглашения с матрицами, используемыми перспективным преобразованием или ортогональным преобразованием.

glMatrixMode(GL_MODELVIEW): соглашения с матрицами, используемыми преобразованием образцового представления. Таким образом, для преобразования объекта (иначе модель) к координатному пространству представления (или пространство камеры).

39
ответ дан 24 November 2019 в 00:25
поделиться

Единичная матрица используется для "инициализирования" матрицы к нормальному значению по умолчанию.

Одна важная вещь понять состоит в том, что умножения матриц в некотором смысле, дополнение. Например, при взятии матрицы, которая запускается с единичной матрицы, умножьте ее времена матрица вращения, затем умножьте ее времена масштабирующаяся матрица, Вы заканчиваете с матрицей, которая поворачивает и масштабирует матрицы, против которых она умножается.

2
ответ дан 24 November 2019 в 00:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: