Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/supermerill/SuperSlicer.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'xs/src/libslic3r/MultiPoint.hpp')
-rw-r--r--xs/src/libslic3r/MultiPoint.hpp17
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