psemek/libs/vecr/include/psemek/vecr/grow.hpp

31 lines
538 B
C++

#pragma once
#include <psemek/vecr/sdf.hpp>
#include <psemek/geom/point.hpp>
#include <psemek/geom/box.hpp>
namespace psemek::vecr
{
template <typename Shape>
struct grow
{
Shape shape;
float distance;
};
template <typename Shape>
sdf_sample sdf(grow<Shape> const & s, geom::point<float, 2> const & p)
{
auto result = sdf(s.shape, p);
result.value -= s.distance;
return result;
}
template <typename Shape>
geom::box<float, 2> bbox(grow<Shape> const & s)
{
return geom::expand(bbox(s.shape), s.distance);
}
}