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<double>')
    VD::point_type   source_point = parabola.focus;
                     ^              ~~~~~~~~~~~~~~
../src/libslic3r/SLA/SupportIslands/ParabolaUtils.cpp:39:33: error: no matching constructor for initialization of 'std::vector<VD::point_type>' (aka 'vector<point_data<double> >')
../src/libslic3r/SLA/SupportIslands/ParabolaUtils.cpp:85:33: error: no matching constructor for initialization of 'std::vector<VD::point_type>' (aka 'vector<point_data<double> >')
This commit is contained in:
Filip Sykala 2021-04-26 12:49:45 +02:00 committed by Lukas Matena
parent 257c285c73
commit d36e16c9f1
3 changed files with 38 additions and 14 deletions

View File

@ -1,5 +1,6 @@
#include "ParabolaUtils.hpp"
#include "PointUtils.hpp"
#include "VoronoiGraphUtils.hpp"
// sampling parabola
#include <libslic3r/Geometry.hpp>
@ -35,14 +36,11 @@ double ParabolaUtils::length_by_sampling(
double discretization_step)
{
using VD = Slic3r::Geometry::VoronoiDiagram;
std::vector<VD::point_type> 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<VD::point_type> 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<double>::discretize(
source_point, source_segment, discretization_step, &parabola_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<Voronoi::Internal::point_type> parabola_samples(
{parabola.from, parabola.to});
std::vector<VD::point_type> 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<double>::discretize(
source_point, source_segment, discretization_step, &parabola_samples);

View File

@ -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<coord_t>();

View File

@ -35,11 +35,20 @@ public:
/// <summary>
/// Convert Vodonoi diagram vertex type to Slicer Point
/// decrease precission by rounding
/// </summary>
/// <param name="vertex">Input point pointer(double precission)</param>
/// <returns>Convertedf point(int preccission)</returns>
/// <returns>Converted point(int preccission)</returns>
static Point to_point(const VD::vertex_type *vertex);
/// <summary>
/// Convert Slic3r point to Vodonoi point type
/// extend precission
/// </summary>
/// <param name="vertex">Input point(int preccission)</param>
/// <returns>Converted vertex(double precission)</returns>
static VD::point_type to_point(const Point &point);
/// <summary>
/// Convert point type between voronoi and slicer format
/// </summary>
@ -47,6 +56,13 @@ public:
/// <returns>created vector</returns>
static Vec2d to_point_d(const VD::vertex_type* vertex);
/// <summary>
/// Convert Slic3r Line to Voronoi segment type
/// </summary>
/// <param name="line">input line(int preccission)</param>
/// <returns>output segment(double precission)</returns>
static VD::segment_type to_segment(const Line &line);
/// <summary>
/// create direction from Voronoi edge
/// </summary>