Use std::ranges for cg::area

This commit is contained in:
Nikita Lisitsa 2023-11-02 20:14:24 +03:00
parent 340a04d17c
commit 1584301a21

View file

@ -3,6 +3,8 @@
#include <psemek/geom/point.hpp> #include <psemek/geom/point.hpp>
#include <psemek/geom/vector.hpp> #include <psemek/geom/vector.hpp>
#include <iterator>
namespace psemek::cg namespace psemek::cg
{ {
@ -15,7 +17,7 @@ namespace psemek::cg
using point_type = std::remove_cvref_t<decltype(*begin)>; using point_type = std::remove_cvref_t<decltype(*begin)>;
auto origin = point_type::zero(); auto origin = point_type::zero();
for (auto it = begin, prev = std::prev(end); it != end; prev = it++) for (auto it = begin, prev = std::ranges::prev(end); it != end; prev = it++)
{ {
result += geom::volume(origin, *prev, *it); result += geom::volume(origin, *prev, *it);
} }
@ -29,7 +31,7 @@ namespace psemek::cg
using scalar_type = std::remove_cvref_t<decltype((*begin)[0])>; using scalar_type = std::remove_cvref_t<decltype((*begin)[0])>;
scalar_type result{}; scalar_type result{};
for (auto it = begin, prev = std::prev(end); it != end; prev = it++) for (auto it = begin, prev = std::ranges::prev(end); it != end; prev = it++)
{ {
auto const v0 = *prev - origin; auto const v0 = *prev - origin;
auto const v1 = *it - origin; auto const v1 = *it - origin;