Skip to content

AFUtik/math-types-cpp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

33 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Math Types Library

The Library only works with standard C++ 17
README has RU translation.

Russian README

Данный проект представляет собой легкую библиотеку, содержащую математические функции и собственные математические примитивы для простых вычислений.

Установка

Библиотека содержит только заголовочные файлы. Чтобы внедрить её, вам необходимо скачать папку проекта и перенести include/mtp в вашу директорию. Для оптимизации вычислений рекомендуется использовать флаг -O3 для компиляторов GCC/Clang или /O2 для MSVC.

Использование

На данный момент доступны следующие примитивы: vector, matrix. Все тонкости работы с векторами описаны далее. Также всё это работает с другими контейнерами библиотеки.

Важно отметить, что при сравнении двух векторов или матриц возвращается битовая маска (bitmask), где 1 означает true, а 0 — false. Если маска отрицательная, то bitmask = 0. Если маска полностью положительная, то возвращается число 0b1111 (количество единиц зависит от размера вектора). Следует учитывать, что битовая маска не может быть больше 32 бит из-за типа integer.

По умолчанию epsilon = 1e-6. Если вам нужно сравнить два вектора с плавающей точкой и задать собственную точность, вы можете указать количество знаков после запятой последним параметром шаблона. Пример: vector<float, 4, 2>.

Вектор имеет публичные поля x, y, z, w, а также r, g, b, a для представления цвета. Если вектор имеет размерность 2, то два последних поля (z и w) будут ссылатся на первый элемент, то есть x.

vector example

#include "mtp/mtp.hpp"

int main()
{
  mtp::vector4f vec1(1.0f); // Заполняет вектор единицами.
  mtp::vector4f vec2(2.0f, 3.0f, 1.0f, 5.0f);

  mtp::vector4f result = vec1 + vec2; // Суммирует два вектора
  vec1 += vec2 // Суммирует значение в vec1

  /* Статические методы */
  mtp::vector4f normalized_vec = mtp::st_vector::normalize(vec1); // Нормализирует вектор
  mtp::vector4<int> = mtp::st_vector::cast<int>(vec1); // Переводит из типа float в int

  /* Методы экземпляра */
  vec1.normalize(); // Нормализует вектор, но результат сохраняется в самом векторе //

  return 0;
}

matrix example

#include "mtp/mtp.hpp"

int main()
{
  mtp::matrix4f mat1(1.0f); // Заполняет матрицу единицами.
  mtp::matrix4f mat2(2.0f);

  mtp::matrix4f result = mat1 + mat2; // Суммирует две матрицы
  mat1 += mat2 // Суммирует матрицу в mat1

  return 0;
}

About

The header Library that provides math primitives and utility functions.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages