diff --git a/libs/pcg/include/psemek/pcg/lazy_perlin.hpp b/libs/pcg/include/psemek/pcg/lazy_perlin.hpp index fbe6d4ff..39767702 100644 --- a/libs/pcg/include/psemek/pcg/lazy_perlin.hpp +++ b/libs/pcg/include/psemek/pcg/lazy_perlin.hpp @@ -7,6 +7,7 @@ #include #include +#include namespace psemek::pcg { @@ -15,7 +16,7 @@ namespace psemek::pcg { template - T perlin_impl(geom::vector p, int grid_size, F && grid_at, G && bound) + T perlin_impl(geom::point p, int grid_size, F && grid_at, G && bound) { geom::vector ip; for (std::size_t i = 0; i < N; ++i) @@ -24,7 +25,7 @@ namespace psemek::pcg } ip = bound(ip); - geom::vector t = (p - geom::cast(ip) * T(grid_size)) / T(grid_size); + geom::vector t = (p - p.zero() - geom::cast(ip) * T(grid_size)) / T(grid_size); T values[1 << N]; @@ -73,7 +74,7 @@ namespace psemek::pcg , subgrid_(std::move(subgrid)) {} - T operator()(geom::vector p) const; + T operator()(geom::point p) const; private: int grid_size_; @@ -94,7 +95,7 @@ namespace psemek::pcg , gen_(std::move(generator)) {} - T operator()(geom::vector p) const; + T operator()(geom::point p) const; auto subview(geom::box const & box) const; @@ -136,7 +137,7 @@ namespace psemek::pcg grid_.resize(dims); } - T operator()(geom::vector p) const; + T operator()(geom::point p) const; private: int const grid_size_; @@ -158,7 +159,7 @@ namespace psemek::pcg }; template - T lazy_perlin_view::operator()(geom::vector p) const + T lazy_perlin_view::operator()(geom::point p) const { return detail::perlin_impl(p, grid_size_, [this](auto const & c){ return subgrid_(c - origin_); @@ -173,7 +174,7 @@ namespace psemek::pcg } template - T lazy_perlin::operator()(geom::vector p) const + T lazy_perlin::operator()(geom::point p) const { return detail::perlin_impl(p, grid_size_, [this](auto const & c){ return grid_at(c); }, [](auto const & p){ return p; }); } @@ -203,7 +204,7 @@ namespace psemek::pcg } template - T bounded_lazy_perlin::operator()(geom::vector p) const + T bounded_lazy_perlin::operator()(geom::point p) const { return detail::perlin_impl(p, grid_size_, [this](auto const & c){ return grid_at(c); }, [this](auto p){ for (std::size_t i = 0; i < N; ++i)