44 lines
1.3 KiB
C++
44 lines
1.3 KiB
C++
|
#include "./distance.hpp"
|
||
|
#include "../../../extent.hpp"
|
||
|
|
||
|
|
||
|
///////////////////////////////////////////////////////////////////////////////
|
||
|
template <size_t S, size_t R>
|
||
|
static const std::array<util::vectori<S>, util::pow(R*2+1,S)>
|
||
|
generate (void)
|
||
|
{
|
||
|
static const util::extent_range<
|
||
|
S,typename util::vectori<S>::value_type
|
||
|
> area (util::extent<S,typename util::vectori<S>::value_type> {R*2+1});
|
||
|
|
||
|
std::array<
|
||
|
util::vectori<S>,
|
||
|
util::pow(R*2+1,S)
|
||
|
> out;
|
||
|
|
||
|
std::transform (area.begin (), area.end (),
|
||
|
out.begin (),
|
||
|
[] (auto i) { return i.template as<util::vector> () - R; });
|
||
|
|
||
|
return out;
|
||
|
}
|
||
|
|
||
|
|
||
|
///////////////////////////////////////////////////////////////////////////////
|
||
|
template <size_t S, size_t R>
|
||
|
const std::array<
|
||
|
util::vectori<S>,
|
||
|
util::pow(R*2+1,S)
|
||
|
>
|
||
|
util::noise::basis::type::distance<S,R>::OFFSETS = generate<S,R> ();
|
||
|
|
||
|
|
||
|
//-----------------------------------------------------------------------------
|
||
|
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>;
|