#include "./distance.hpp" #include "../../../extent.hpp" #include "../../../cast.hpp" /////////////////////////////////////////////////////////////////////////////// template static const std::array< util::vectori, util::pow(R*2+1,S) > generate (void) { using value_type = typename util::vectori::value_type; static const util::extent_range< S,typename util::vectori::value_type > area (util::extent {R*2+1}); std::array< util::vectori, util::pow(R*2+1,S) > out; std::transform (area.begin (), area.end (), out.begin (), [] (auto i) { return i.template as () - sign_cast (R); }); return out; } /////////////////////////////////////////////////////////////////////////////// template const std::array< util::vectori, util::pow(R*2+1,S) > util::noise::basis::type::distance::OFFSETS = generate (); //----------------------------------------------------------------------------- template struct util::noise::basis::type::distance<1,1>; template struct util::noise::basis::type::distance<2,1>; template struct util::noise::basis::type::distance<3,1>; template struct util::noise::basis::type::distance<1,2>; template struct util::noise::basis::type::distance<2,2>; template struct util::noise::basis::type::distance<3,2>;