diff options
Diffstat (limited to 'xs/src/libslic3r/MultiPoint.hpp')
-rw-r--r-- | xs/src/libslic3r/MultiPoint.hpp | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/xs/src/libslic3r/MultiPoint.hpp b/xs/src/libslic3r/MultiPoint.hpp index f4f82a353..02086ded8 100644 --- a/xs/src/libslic3r/MultiPoint.hpp +++ b/xs/src/libslic3r/MultiPoint.hpp @@ -105,6 +105,23 @@ extern BoundingBox get_extents(const MultiPoint &mp); extern BoundingBox get_extents_rotated(const std::vector<Point> &points, double angle); extern BoundingBox get_extents_rotated(const MultiPoint &mp, double angle); +inline double length(const Points &pts) { + double total = 0; + if (! pts.empty()) { + auto it = pts.begin(); + for (auto it_prev = it ++; it != pts.end(); ++ it, ++ it_prev) + total += it->distance_to(*it_prev); + } + return total; +} + +inline double area(const Points &polygon) { + double area = 0.; + for (size_t i = 0, j = polygon.size() - 1; i < polygon.size(); j = i ++) + area += double(polygon[j].x + polygon[i].x) * double(polygon[i].y - polygon[j].y); + return area; +} + } // namespace Slic3r #endif |