31 lines
538 B
C++
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);
|
|
}
|
|
|
|
}
|