ddd.matrix

Модуль, представляющий две структуры матриц:

  • struct Матрица3;

    Структура, представляющая матрицу размерности 3x3. Обычно используется в качестве матрицы поворота.

    • m

      float[9] m;

      9 элементов матрицы, представленные в виде одномерного массива.

    • string toString();

      Функция, используемая для вывода элементов матрицы в строковое представление

  • struct Матрица4;

    Структура, представляющая матрицу размерности 4x4. Используется для афинных преобразований, т.е. задаёт поворот, сдвиг и масштаб в OpenGL.

    • m

      float[16] m;

      16 элементов матрицы, представленные в виде одномерного массива.

    • this(float m00, float m01, float m02, float m03, float m10, float m11, float m12, float m13, float m20, float m21, float m22, float m23, float m30, float m31, float m32, float m33);

      Конструктор, получающий 16 чисел в качестве элементов матрицы

      Параметры:

      mij

      элемент, находящийся в i-ой строке, j-ом столбце

    • this(const Матрица4 другая_матрица);

      Конструктор копирования

    • this(const Матрица3 m3x3);

      Конструктор, строящий матрицу 4x4 на основе матрицы поворота 3x3 с нулевым сдвигом.

      Параметры:

      Матрица3 m3x3

      матрица поворота

    • void матрица_преобразований(const(Вектор3) сдвиг, const(Вектор3) масштаб, const(Кватернион) поворот);

      Функция, заполняющая элементы матрицы для выполнения афинных преобразований.

      Порядок применения преобразований: 1. Масштаб 2. Поворот 3. Сдвиг

      Параметры:

      const(Вектор3) сдвиг

      вектор, на который выполняется сдвиг

      const(Вектор3) масштаб

      вектор, элементы которого представляют коэффициенты масштаба по соответствующим осям

      const(Кватернион) поворот

      кватернион, представляющий угол и ось поворота

    • Матрица4 транспонировать();

      Возвращает матрицу, полученную в результате транспонирования этой матрицы

    • Матрица4 opBinary(string операция)(const(Матрица4) m2) if (операция == "+" || операция == "-" || операция == "*");

      Сложение, вычитание и умножение этой матрицы и матрицы m2

      Notes: Операция умножения не коммутативна, т.е. M1*M2 ≠ M2*M1

    • Матрица4 opBinary(string операция)(const float скаляр) if (операция == "*");

      Умножение элементов этой матрицы на число

    • Вектор3 Позиция();

      Возвращает вектор, на который производит сдвиг эта матрица

    • string toString();

      Вывод элементов матрицы в строковое представление

    • Матрица3 получить_матрицу_3x3();

      Возвращает минор этой матрицы размера 3x3, представляющий матрицу вращения и масштабирования

    • const float определитель();

      Возвращает определитель матрицы

    • const Матрица4 обратная();

      Возвращает матрицу, обратную этой

      Замечание: Если определитель матрицы равен 0, элементы матрицы-результата будут равны inf (бесконечность)