QVM: Quaternions, Vectors, Matrices
boost/qvm/quat_traits_array.hpp
В этом заголовке представлены специализацииquat_traitsвывести [кват]ивывести_кват2шаблоны, которые позволяют передавать C-массивы размером 4 любой функции Boost QVM, которая принимает кватернион.
Например, после#include<boost/qvm/quat_traits_array.hpp>, для вычисления точечного продукта из двух поплавков C массивы размером 4, интерпретируемые как кватернионы, можно использовать:
float a[4], b[4];
float dp = dot(a,b);
Чтобы использовать перегрузки оператора Boost QVM, по крайней мере один из аргументов не должен быть встроенного типа; например, вы не можете умножить кватернион массива C на скаляр, используя оператор*=напрямую. Используйтеqref, чтобы обойти этот вопрос:
float a[4];
qref(a) *= 42;