From d36e16c9f1d424d43a047589512ef03975d8470a Mon Sep 17 00:00:00 2001 From: Filip Sykala Date: Mon, 26 Apr 2021 12:49:45 +0200 Subject: [PATCH] FIX: Add convert Slic3r::Point to Voronoi::point_type ../src/libslic3r/SLA/SupportIslands/ParabolaUtils.cpp:92:22: error: no viable conversion from 'const Slic3r::Point' to 'VD::point_type' (aka 'point_data') VD::point_type source_point = parabola.focus; ^ ~~~~~~~~~~~~~~ ../src/libslic3r/SLA/SupportIslands/ParabolaUtils.cpp:39:33: error: no matching constructor for initialization of 'std::vector' (aka 'vector >') ../src/libslic3r/SLA/SupportIslands/ParabolaUtils.cpp:85:33: error: no matching constructor for initialization of 'std::vector' (aka 'vector >') --- .../SLA/SupportIslands/ParabolaUtils.cpp | 24 +++++++++---------- .../SLA/SupportIslands/VoronoiGraphUtils.cpp | 10 ++++++++ .../SLA/SupportIslands/VoronoiGraphUtils.hpp | 18 +++++++++++++- 3 files changed, 38 insertions(+), 14 deletions(-) diff --git a/src/libslic3r/SLA/SupportIslands/ParabolaUtils.cpp b/src/libslic3r/SLA/SupportIslands/ParabolaUtils.cpp index 330be61572..c7e076117b 100644 --- a/src/libslic3r/SLA/SupportIslands/ParabolaUtils.cpp +++ b/src/libslic3r/SLA/SupportIslands/ParabolaUtils.cpp @@ -1,5 +1,6 @@ #include "ParabolaUtils.hpp" #include "PointUtils.hpp" +#include "VoronoiGraphUtils.hpp" // sampling parabola #include @@ -35,14 +36,11 @@ double ParabolaUtils::length_by_sampling( double discretization_step) { using VD = Slic3r::Geometry::VoronoiDiagram; - std::vector parabola_samples({parabola.from, parabola.to}); - const Point &f = parabola.focus; - VD::point_type source_point(f.x(), f.y()); - const Point & a = parabola.directrix.a; - const Point & b = parabola.directrix.b; - VD::segment_type source_segment(VD::point_type(a.x(), a.y()), - VD::point_type(b.x(), b.y())); - + std::vector parabola_samples({ + VoronoiGraphUtils::to_point(parabola.from), + VoronoiGraphUtils::to_point(parabola.to)}); + VD::point_type source_point = VoronoiGraphUtils::to_point(parabola.focus); + VD::segment_type source_segment = VoronoiGraphUtils::to_segment(parabola.directrix); ::boost::polygon::voronoi_visual_utils::discretize( source_point, source_segment, discretization_step, ¶bola_samples); @@ -86,12 +84,12 @@ void ParabolaUtils::draw(SVG & svg, using VD = Slic3r::Geometry::VoronoiDiagram; if (PointUtils::is_equal(parabola.from, parabola.to)) return; - std::vector parabola_samples( - {parabola.from, parabola.to}); + std::vector parabola_samples( + {VoronoiGraphUtils::to_point(parabola.from), + VoronoiGraphUtils::to_point(parabola.to)}); + VD::point_type source_point = VoronoiGraphUtils::to_point(parabola.focus); + VD::segment_type source_segment = VoronoiGraphUtils::to_segment(parabola.directrix); - VD::point_type source_point = parabola.focus; - VD::segment_type source_segment(parabola.directrix.a, - parabola.directrix.b); ::boost::polygon::voronoi_visual_utils::discretize( source_point, source_segment, discretization_step, ¶bola_samples); diff --git a/src/libslic3r/SLA/SupportIslands/VoronoiGraphUtils.cpp b/src/libslic3r/SLA/SupportIslands/VoronoiGraphUtils.cpp index 84c42b7814..7ef7c128cd 100644 --- a/src/libslic3r/SLA/SupportIslands/VoronoiGraphUtils.cpp +++ b/src/libslic3r/SLA/SupportIslands/VoronoiGraphUtils.cpp @@ -36,11 +36,21 @@ Slic3r::Point VoronoiGraphUtils::to_point(const VD::vertex_type *vertex) return Point(to_coord(vertex->x()), to_coord(vertex->y())); } +VoronoiGraphUtils::VD::point_type VoronoiGraphUtils::to_point(const Point &point) +{ + return VD::point_type(point.x(), point.y()); +} + Slic3r::Vec2d VoronoiGraphUtils::to_point_d(const VD::vertex_type *vertex) { return Vec2d(vertex->x(), vertex->y()); } +VoronoiGraphUtils::VD::segment_type VoronoiGraphUtils::to_segment(const Line &line) +{ + return VD::segment_type(to_point(line.a), to_point(line.b)); +} + Slic3r::Point VoronoiGraphUtils::to_direction(const VD::edge_type *edge) { return to_direction_d(edge).cast(); diff --git a/src/libslic3r/SLA/SupportIslands/VoronoiGraphUtils.hpp b/src/libslic3r/SLA/SupportIslands/VoronoiGraphUtils.hpp index 0de5a0b89d..6555e6253e 100644 --- a/src/libslic3r/SLA/SupportIslands/VoronoiGraphUtils.hpp +++ b/src/libslic3r/SLA/SupportIslands/VoronoiGraphUtils.hpp @@ -35,11 +35,20 @@ public: /// /// Convert Vodonoi diagram vertex type to Slicer Point + /// decrease precission by rounding /// /// Input point pointer(double precission) - /// Convertedf point(int preccission) + /// Converted point(int preccission) static Point to_point(const VD::vertex_type *vertex); + /// + /// Convert Slic3r point to Vodonoi point type + /// extend precission + /// + /// Input point(int preccission) + /// Converted vertex(double precission) + static VD::point_type to_point(const Point &point); + /// /// Convert point type between voronoi and slicer format /// @@ -47,6 +56,13 @@ public: /// created vector static Vec2d to_point_d(const VD::vertex_type* vertex); + /// + /// Convert Slic3r Line to Voronoi segment type + /// + /// input line(int preccission) + /// output segment(double precission) + static VD::segment_type to_segment(const Line &line); + /// /// create direction from Voronoi edge ///