From a7f067bedb6960df0dd934262add02109496a59f Mon Sep 17 00:00:00 2001 From: lisyarus Date: Sun, 29 Nov 2020 12:25:25 +0300 Subject: [PATCH] Add shrink & expand functions for intervals & boxes --- libs/geom/include/psemek/geom/box.hpp | 16 ++++++++++++++++ libs/geom/include/psemek/geom/interval.hpp | 12 ++++++++++++ 2 files changed, 28 insertions(+) diff --git a/libs/geom/include/psemek/geom/box.hpp b/libs/geom/include/psemek/geom/box.hpp index 636d1165..410dd52a 100644 --- a/libs/geom/include/psemek/geom/box.hpp +++ b/libs/geom/include/psemek/geom/box.hpp @@ -230,4 +230,20 @@ namespace psemek::geom return os; } + template + box expand(box b, T const & d) + { + for (std::size_t i = 0; i < N; ++i) + { + b[i] = expand(b[i], d); + } + return b; + } + + template + box shrink(box b, T const & d) + { + return expand(b, -d); + } + } diff --git a/libs/geom/include/psemek/geom/interval.hpp b/libs/geom/include/psemek/geom/interval.hpp index 3bca9521..79f89af3 100644 --- a/libs/geom/include/psemek/geom/interval.hpp +++ b/libs/geom/include/psemek/geom/interval.hpp @@ -245,4 +245,16 @@ namespace psemek::geom return os; } + template + interval expand(interval const & i, T const & d) + { + return {i.min - d, i.max + d}; + } + + template + interval shrink(interval const & i, T const & d) + { + return expand(i, -d); + } + }