В трёхмерной графике CesiumJS матричные преобразования формируют базовый механизм описания положения, ориентации и масштаба объектов в пространстве. Любая сцена, построенная поверх глобуса, сводится к последовательному применению матриц, связывающих локальные системы координат объектов с глобальной геоцентрической системой.
В основе лежит использование однородных координат, где трёхмерная
точка представляется как вектор (x, y, z, 1). Это позволяет
объединять повороты, переносы и масштабирование в единую операцию
умножения матрицы 4×4 на вектор.
Ключевое свойство матричных преобразований — композиционность:
CesiumJS использует правостороннюю систему координат с геоцентрической моделью Earth-Centered, Earth-Fixed (ECEF), где оси привязаны к вращающейся Земле.
Matrix3 в CesiumJS предназначена для операций в
трёхмерном пространстве без учёта переноса. Она применяется для:
Типичная структура:
Основные сценарии использования:
Матрицы вращения часто формируются из:
Quaternion)В CesiumJS поворот чаще всего вычисляется через кватернионы и затем
конвертируется в Matrix3, поскольку это снижает риск gimbal
lock и обеспечивает стабильную интерполяцию.
При освещении поверхностей используется обратная транспонированная матрица:
Matrix4Matrix4 — основная матрица трансформаций в CesiumJS,
объединяющая:
Она используется во всех уровнях сцены:
Структура Matrix4:
Классическая форма:
| R11 R12 R13 Tx |
| R21 R22 R23 Ty |
| R31 R32 R33 Tz |
| 0 0 0 1 |
где R — матрица вращения, T — перенос.
В CesiumJS ключевым этапом является переход из географических координат (широта, долгота, высота) в ECEF:
Этот переход осуществляется через трансформации, возвращающие
Matrix4.
Примеры таких преобразований:
CesiumJS активно использует локальные системы:
Оси:
Матрица создаётся функциями трансформаций и применяется для:
Используется в авиационных и навигационных моделях:
Модуль Transforms предоставляет набор функций,
возвращающих Matrix4:
Ключевые операции:
Формирует матрицу, переводящую локальные координаты в ECEF:
Ориентация объекта через три угла:
Эти параметры преобразуются в кватернион, затем в матрицу поворота.
Ключевой принцип CesiumJS — последовательное умножение матриц:
M = T × R × S
где:
T — переносR — вращениеS — масштабПорядок важен: изменение порядка приводит к различным результатам.
Типичные сценарии:
Дочерние объекты наследуют матрицу родителя:
M_child_world = M_parent_world × M_child_local
Камера в CesiumJS управляется через обратную матрицу трансформации:
View matrix переводит мировые координаты в систему наблюдателя.
Основные компоненты:
Для отображения сцены используется projection matrix:
Перспективная матрица учитывает:
Итоговая цепочка:
clipPosition = Projection × View × Model × position
CesiumJS поддерживает временные трансформации:
Матрицы пересчитываются на каждом кадре с учётом:
Матричные операции в CesiumJS оптимизированы:
Особое внимание уделяется:
Кватернионы используются как промежуточное представление:
Переход:
Quaternion → Matrix3 → Matrix4
Кватернионы применяются в:
Сцена CesiumJS строится как дерево трансформаций:
Каждый уровень добавляет собственную матрицу, формируя итоговое положение в пространстве через цепочку умножений.
В типичном кадре выполняется:
Каждый объект сцены проходит один и тот же конвейер, независимо от сложности геометрии.
Матричные преобразования в CesiumJS учитывают:
Для минимизации ошибок используются: