Шаблонное метапрограммирование в Armadillo - PullRequest
0 голосов
/ 31 марта 2019

Я хочу использовать библиотеку Armadillo для вычислений в моем проекте трассировки лучей. Я где-то читал, что могу использовать собственный векторный класс, чтобы передать его в Armadillo, используя программирование шаблонов, но больше информации не нашел. Я хочу этого, потому что я хочу опустить использование оператора таблицы.

TL; DR Я хочу использовать Armadillo как GLM

arma::vec3 orig;
orig.x = 12.f;
orig.y = 13.f;

Где в GLM:

glm::ivec3 vec;
vec.x = ...;
vec.y = ...;

Я думаю о макросе, но это не элегантное решение. Кроме того, я должен использовать броненосец, поэтому предложение использовать GLM падает

1 Ответ

0 голосов
/ 19 апреля 2019

Я забыл добавить ответ раньше: Я копирую перегруженный оператор [] и изменяю его на эту форму (файл 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];
   }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...