QVM: Quaternions, Vectors, Matrices
Boost QVM - это универсальная библиотека для работы с quaternions, vectors и matrices статического размера с акцентом на 2, 3 и 4-мерные операции, необходимые в графике, видеоиграх и приложениях моделирования.
Introduction
В графических и имитационных приложениях существует потребность в библиотеке, которая позволяет эффективно выполнять 2D и 3D преобразования. C++ позволяет определять векторные и матричные типы и перегружать различные операторы для реализации стандартных алгебраических операций. Поскольку это относительно простой процесс, существует множество таких библиотек, каждая из которых имеет свои собственные типы и перегрузки операторов. Такие библиотеки обычно являются частью системы более высокого уровня, такой как графический движок или API для 3D-моделирования. В результате программистам обычно приходится интегрировать и переводить между несколькими различными типами кватерниона, вектора и матрицы, которые поставляются с различными API, которые они используют.
С другой стороны, соображения производительности часто приводят к тому, что типы матриц и векторов соединяются с конкретной платформой или со временем приобретают различные #ifdefs, необходимые для оптимизации с помощью функций компилятора, специфичного для платформы, которые контролируют физический формат или макет своих элементов. Однако такая оптимизация может мешать простоте использования и переносимости; например, на некоторых платформах, требующих 16-байтного выравнивания для типов матриц, они несовместимы со стандартными контейнерами.
Boost QVM решает обе эти проблемы, отделяя стандартные алгебраические операции от типов, на которых они работают.
Key design features of Boost QVM:
- Акцент на 2, 3 и 4-мерных операциях (включаякватернионы)и нулевые накладные расходыСвифт) по мере необходимости в графических и имитационных приложениях.
- Нулевой накладнойвид прокси, которые могут быть использованы для доступа к объекту с кватернионной, векторной или матричной семантикой через ссылку только для чтения или изменяемую ссылку другого типа. Например,col(m)связываетС— столбец матрицымкак изменчивый векторный тип без накладных расходов временного.
- Интеграция многих пользовательских или 3-х сторонних типов кватерниона, вектора или матрицы в когерентную систему безопасности типов. Это позволяет пользователю создавать алгебраические выражения, используя объекты различных типов, которые в противном случае были бы несовместимы.
- Когда пользователям необходимо реализовать оптимизацию для конкретной платформы или даже проекта в данной подсистеме, Boost QVM упрощает определение новых типов, которые автоматически приобретают полный набор алгебраических операций, чтобы они могли легко взаимодействовать с остальной частью программы. При этом пользователь может определить ограниченное количество перегрузок для новых типов по мере необходимости реализации конкретных оптимизаций.
Contents
Download
QVM является частью Boost. Пожалуйста, смотрите субмодуль git по адресу https://github.com/boostorg/qvm.
Support
Для поддержки, пожалуйста, используйте список рассылки Boost Developers .