diff options
author | Dan Goodliffe <dan@randomdan.homeip.net> | 2025-02-14 23:53:46 +0000 |
---|---|---|
committer | Dan Goodliffe <dan@randomdan.homeip.net> | 2025-02-15 00:06:27 +0000 |
commit | f26559dcd25b649d37a1a30e087b70b95f530954 (patch) | |
tree | 4874868c9bbee81618343cee6a03f0e135d34f3d /lib | |
parent | Use new helpers to simplify close entity search in GeoData::setPoint (diff) | |
download | ilt-f26559dcd25b649d37a1a30e087b70b95f530954.tar.bz2 ilt-f26559dcd25b649d37a1a30e087b70b95f530954.tar.xz ilt-f26559dcd25b649d37a1a30e087b70b95f530954.zip |
Range adaptor to make triangle strip triples
Diffstat (limited to 'lib')
-rw-r--r-- | lib/collections.h | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/lib/collections.h b/lib/collections.h index fcd65d3..c81bede 100644 --- a/lib/collections.h +++ b/lib/collections.h @@ -197,6 +197,14 @@ template<typename iter> struct stripiter { return *this; } + constexpr stripiter + operator++(int) + { + auto out {*this}; + ++*this; + return out; + } + constexpr stripiter & operator--() { @@ -205,6 +213,14 @@ template<typename iter> struct stripiter { return *this; } + constexpr stripiter + operator--(int) + { + auto out {*this}; + --*this; + return out; + } + constexpr auto operator-(const stripiter & other) const { @@ -235,6 +251,16 @@ strip_end(IterableCollection auto & cont) return stripiter {cont.end()}; } +struct TriangleTriplesImpl : public std::ranges::range_adaptor_closure<TriangleTriplesImpl> { + decltype(auto) + operator()(const auto & triangleStrip) const + { + return std::views::iota(strip_begin(triangleStrip), strip_end(triangleStrip)); + } +}; + +constexpr TriangleTriplesImpl TriangleTriples; + template<typename T, typename Dist, typename Merger> void mergeClose(std::vector<T> & range, const Dist & dist, const Merger & merger, |