QVM: Quaternions, Vectors, Matrices
Accessing Vector Elements
#включает <boost/qvm/vec_access.hpp>include <boost/qvm/vec_access.hpp>[ORIG_END] -->
namespace boost
{
namespace qvm
{
//Only enabled if:
// is_vec<V>::value
template <int I,class V> -unspecified-return-type- A( V & v );
template <class V> -unspecified-return-type- A0( V & v );
template <class V> -unspecified-return-type- A1( V & v );
...
template <class V> -unspecified-return-type- A9( V & v );
template <class V> -unspecified-return-type- X( V & v );
template <class V> -unspecified-return-type- Y( V & v );
template <class V> -unspecified-return-type- Z( V & v );
template <class V> -unspecified-return-type- W( V & v );
}
}
Выражение формы A(v) можно использовать для доступа к I-му элементу векторного объекта v. Например, выражение:
A<1>(v) *= 42;
можно использовать для умножения элемента при индексе 1 (индексирование в Boost QVM всегда на нулевой основе) вектора v на 42.
Для удобства существуют также нешаблонные перегрузки для I от 0 до 9; альтернативным способом написания вышеуказанного выражения является:
A1(v) *= 42;
X, Y, Z и W действуют так же, как A0/A1/A2/A3; еще один альтернативный способ написать вышеупомянутое выражение:
Y(v) *= 42;