Интересные проекты: математическая C-библиотека для разработки видеоигр
Проект MATHC — коллекция объектов для разработки 2D- и 3D-игр.
8К открытий8К показов
Сегодня мы рассмотрим проект MATHC. По своей сути, это простая математическая библиотека, которая может быть использована для разработки 2D- и 3D-игр. Она содержит реализации следующих математических объектов на чистом С:
- 2D- и 3D-векторы;
- кватернионы;
- матрицы;
- функции плавности.
Реализация объектов поддерживает как стандарт С99, так и более новые.
Тип float
Каждая структура и функция библиотеки использует тип float, поскольку в большинстве своём в разработке 2D- и 3D-игр при помощи OpenGL применяется именно этот тип данных.
Передача по значению или по указателю
Для функций, принимающих в качестве параметров структуры, предусмотрено две версии реализации. Первая — когда структура передаётся по значению, вторая — по указателю. Второй вид функций имеет префикс p перед именем типа (pvector2, pvector3, pquaternion и pmatrix), а результат записывается в передаваемый аргумент *result.
Векторы
Все векторы (2D, 3D и кватернионы) имеют вид структур типа struct vec. Отметим, что компонента z может быть использована и для 2D-векторов, поскольку она применяется в OpenGL для проверки глубины. Компонента w используется только для описания кватерниона.
Матрицы
Все матрицы в библиотеке имеют размер 4×4. В MATHC также реализованы функции для настройки матриц модели, мира и проекции. Обычно матрица мира используется для изменения множества вершин на стороне клиента или на графическом процессоре. Если вы хотите изменить вершины на стороне клиента, то используйте функции matrix_multiply_f4() или pmatrix_multiply_f4() для изменения массива с 4 float-элементами:
Если вы хотите изменить вершины на стороне GPU, то используйте функции matrix_to_array() или pmatrix_to_array() для перевода матрицы в массив с 16 float-элементами:
Функции плавности
Функции плавности полезны для анимации. Библиотечная реализация функций основана на их описании. Функции принимают значения от 0.0f до 1.0f и возвращают значения внутри этого же диапазона. Однако в некоторых из функций возвращаемое значение экстраполирует этот диапазон.
Лицензия MATHC
Исходный код проекта подчиняется лицензии ZLIB.
8К открытий8К показов



