我想在我的光线跟踪项目中使用Armadillo库进行计算。我在某处读到,可以使用模板编程使用自己的向量类将其传递给Armadillo,但我找不到更多信息。我想要这个,因为我想省略使用表运算符。
TL; DR我想像GLM一样使用犰狳
arma::vec3 orig;
orig.x = 12.f;
orig.y = 13.f;
在GLM中的位置
glm::ivec3 vec;
vec.x = ...;
vec.y = ...;
我想到了宏,但是它不是一个优雅的解决方案。另外,我必须使用犰狳,因此建议使用GLM跌落
答案 0 :(得分:0)
我忘了早些添加答案: 我复制重载的运算符[]并将其更改为这种形式(Col_meat.hpp文件),并对y,z,w(当然会改变索引)执行相同的操作
template<typename eT>
template<uword fixed_n_elem>
arma_inline
arma_warn_unused
eT&
Col<eT>::fixed<fixed_n_elem>::x(void)
{
arma_debug_check((0 >= fixed_n_elem), "Col::x(): index out of bounds");
return (use_extra) ? mem_local_extra[0] : Mat<eT>::mem_local[0];
}
template<typename eT>
template<uword fixed_n_elem>
arma_inline
arma_warn_unused
const eT&
Col<eT>::fixed<fixed_n_elem>::x(void) const
{
arma_debug_check((0 >= fixed_n_elem), "Col::x(): index out of bounds");
return (use_extra) ? mem_local_extra[0] : Mat<eT>::mem_local[0];
}