Модуль математики

struct Vector3d

3D вектор с дополнительной компонентой w

Используется для однородных координат и 3D преобразований

Public Functions

inline Vector3d()

Конструктор по умолчанию (нулевой вектор)

inline Vector3d(float x, float y, float z, float w = 1.0f)

Конструктор с параметрами

Параметры:
  • x – Координата X

  • y – Координата Y

  • z – Координата Z

  • w – Однородная координата (опционально)

void print()

Вывод вектора в консоль

Vector3d operator+(Vector3d &other)

Сложение векторов

Параметры:

other – Второй вектор

Результат:

Результат сложения

Vector3d operator-(Vector3d &other)

Вычитание векторов

Параметры:

other – Второй вектор

Результат:

Результат вычитания

Vector3d operator*(float k)

Умножение на скаляр

Параметры:

k – Скаляр

Результат:

Результат умножения

Vector3d operator/(float k)

Деление на скаляр

Параметры:

k – Скаляр (не должен быть 0)

Бросает исключение:

std::invalid_argument – Если k = 0

Результат:

Результат деления

float operator[](int index)

Доступ к компонентам по индексу

Параметры:

index – 0-X, 1-Y, 2-Z, 3-W

Бросает исключение:

std::out_of_range – При неверном индексе

Результат:

Значение компоненты

bool operator==(Vector3d &other)

Сравнение векторов

Параметры:

other – Второй вектор

Результат:

true если векторы равны (w не учитывается)

float length()

Вычисление длины вектора

Результат:

Длина вектора

Vector3d normalise()

Нормализация вектора

Результат:

Нормализованный вектор

Public Members

float x

Координата X.

float y

Координата Y.

float z

Координата Z.

float w = 1.0f

Однородная координата (по умолчанию 1.0)

struct Matrix4X4

4x4 матрица для линейных преобразований

Поддерживает операции поворота, масштабирования, переноса, проекции

Public Functions

void print()

Выводит матрицу в консоль

float *operator[](int index)

Доступ к строке матрицы по индексу

Параметры:

index – Индекс строки (0-3)

Бросает исключение:

std::out_of_range – При неверном индексе

Результат:

Указатель на строку матрицы

bool operator==(Matrix4X4 &other)

Сравнение матриц на равенство

Параметры:

other – Матрица для сравнения

Результат:

true если матрицы равны

Public Members

float m[4][4] = {0}

Элементы матрицы (строка, столбец)

Public Static Functions

static Matrix4X4 makeIdentity()

Создает единичную матрицу

Результат:

Единичная матрица 4x4

static Matrix4X4 makeRotationX(float fAngleRad)

Создает матрицу поворота вокруг оси X.

Параметры:

fAngleRad – Угол поворота в радианах

Результат:

Матрица поворота вокруг X

static Matrix4X4 makeRotationY(float fAngleRad)

Создает матрицу поворота вокруг оси Y.

Параметры:

fAngleRad – Угол поворота в радианах

Результат:

Матрица поворота вокруг Y

static Matrix4X4 makeRotationZ(float fAngleRad)

Создает матрицу поворота вокруг оси Z.

Параметры:

fAngleRad – Угол поворота в радианах

Результат:

Матрица поворота вокруг Z

static Matrix4X4 makeTranslation(float x, float y, float z)

Создает матрицу переноса

Параметры:
  • x – Смещение по X

  • y – Смещение по Y

  • z – Смещение по Z

Результат:

Матрица переноса

static Matrix4X4 makeScale(float x, float y, float z)

Создает матрицу масштабирования

Параметры:
  • x – Масштаб по X

  • y – Масштаб по Y

  • z – Масштаб по Z

Результат:

Матрица масштабирования

static Matrix4X4 makeProjection(float fFovDegrees, float fAspectRatio, float fNear, float fFar)

Создает матрицу проекции

Параметры:
  • fFovDegrees – Угол обзора в градусах

  • fAspectRatio – Соотношение сторон

  • fNear – Ближняя плоскость отсечения

  • fFar – Дальняя плоскость отсечения

Результат:

Матрица проекции

static Matrix4X4 Matrix_PointAt(Vector3d &pos, Vector3d &target, Vector3d &up)

Создает матрицу направления «смотрит на».

Параметры:
  • pos – Позиция наблюдателя

  • target – Целевая точка

  • up – Вектор «вверх»

Результат:

Матрица направления