47 Commits

Author SHA1 Message Date
Lukas Matena
f57de43680 Fixed several more warnings 2023-03-23 22:59:01 +01:00
Lukas Matena
1fbbaaae9b Fixed several warnings 2023-03-07 14:47:25 +01:00
Vojtech Bubnik
978f5c8b47 Merge remote-tracking branch 'remotes/origin/master' into vb_ensurovani 2023-02-17 15:20:47 +01:00
Lukas Matena
21c76d2e2e Fixed a typo in assert 2023-02-10 12:25:49 +01:00
Vojtech Bubnik
001358cbba Merge remote-tracking branch 'remotes/origin/master' into vb_ensurovani 2023-02-02 09:53:14 +01:00
Lukáš Hejl
8ac60ccc7a Extend the algorithm for detecting non-planar Voronoi diagrams to include testing orientation between a line and a parabola and testing orientation between two parabolas. It fixed most of the issues reported in #8846.
Co-authored-by: Vojtech Bubnik <bubnikv@gmail.com>
2023-01-11 22:18:00 +01:00
Vojtech Bubnik
7cb3007558 Fixed ThickPolyline clear(), which did not clear widths.
Fixed by refactoring ThickPolyline to compose Polyline instead
of being derived of it.
2023-01-10 12:18:06 +01:00
Vojtech Bubnik
479a39ce0e Fixed some compiler warnings 2023-01-04 16:41:42 +01:00
Lukas Matena
a37f09edaa Measurement: optimize feature extraction:
- do not call ransac when not needed
- decrease number of ransac iterations
- precalculate inverse of transformation matrix
- pass the min error from ransac algorithm, do not calculate it again
2022-12-06 09:57:24 +01:00
Vojtech Bubnik
a98467f661 Merge remote-tracking branch 'remotes/origin/master' into vb_treesupports 2022-11-18 13:26:48 +01:00
Vojtech Bubnik
fe51f77839 Improvements in performance of Medial Axis algorithm.
Fixes Slicing slows or hangs on "Generating Permiters 20%" cpu load is at 100% #8164
Fixes Slicing hangs on generating perimeters with thing:3565827 (30g) #3259
2022-11-16 12:03:31 +01:00
Pavel Mikuš
06fbab12fe
Pm overhang extra perimeters (#7)
Implementation of extra perimeters on steep overhangs/flat unsupported parts
Also contains:
Principal components computation over polygon area
New fast bridge direction estimation which minimizes amount of unanchored bridge endpoints
2022-11-09 10:38:36 +01:00
Lukas Matena
d7a34f7e40 Merge branch 'master_250' 2022-08-30 16:31:07 +02:00
Lukáš Hejl
de48bcd1b2 Fix of #8724, #8747, and #8753: Crash when Voronoi vertexes of a finite edge have some coordinate NaN or infinite. 2022-08-30 08:28:14 +02:00
Lukas Matena
bce2b148f4 Merged 2.5.0-beta1 into master (NO CONFLICTS FIXED) 2022-08-15 13:41:40 +02:00
PavelMikus
44a388d560 prefer enforcers over blockers, lower the threshold distance,
dynamic modification of segments count in alignment based on smoothnes
2022-08-11 15:30:51 +02:00
Lukáš Hejl
77f5973c25 Fix of #8446: Non-planar Voronoi diagram.
This is the follow-up to 63c66f4f189b6f3d3a3b95ddd158c66ee5166420. Detection of non-planar (degenerated) Voronoi diagrams was rewritten to check if all neighboring edges of the Voronoi vertex are CCW ordered.
2022-07-26 13:47:40 +02:00
Lukas Matena
fbdf777898 Merge branch 'master_250' 2022-07-15 15:04:10 +02:00
PavelMikus
fec3afa490 cubic spline segment size based on the length of string 2022-07-14 10:15:05 +02:00
Lukas Matena
62e59a4526 Fixing conflicts part 1:
fixed simple conflicts
2022-06-29 16:43:29 +02:00
Lukas Matena
b61714bb3e Merge branch 'master_250' (NO CONFLICTS FIXED):
CONFLICT (content): Merge conflict in resources/profiles/PrusaResearch.idx
CONFLICT (content): Merge conflict in resources/profiles/PrusaResearch.ini
CONFLICT (content): Merge conflict in src/libslic3r/CMakeLists.txt
CONFLICT (content): Merge conflict in src/libslic3r/Fill/Fill.cpp
CONFLICT (content): Merge conflict in src/libslic3r/GCode.cpp
CONFLICT (content): Merge conflict in src/libslic3r/GCode.hpp
CONFLICT (content): Merge conflict in src/libslic3r/GCode/GCodeProcessor.cpp
CONFLICT (content): Merge conflict in src/libslic3r/GCode/GCodeProcessor.hpp
CONFLICT (content): Merge conflict in src/libslic3r/GCode/SeamPlacer.cpp
CONFLICT (content): Merge conflict in src/libslic3r/GCode/SeamPlacer.hpp
CONFLICT (add/add): Merge conflict in src/libslic3r/Geometry/Curves.hpp
CONFLICT (content): Merge conflict in src/libslic3r/PerimeterGenerator.cpp
CONFLICT (content): Merge conflict in src/libslic3r/Point.hpp
CONFLICT (content): Merge conflict in src/libslic3r/PrintConfig.hpp
CONFLICT (content): Merge conflict in src/slic3r/GUI/ConfigWizard.cpp
CONFLICT (content): Merge conflict in src/slic3r/GUI/GCodeViewer.cpp
CONFLICT (content): Merge conflict in src/slic3r/GUI/GLCanvas3D.cpp
CONFLICT (content): Merge conflict in src/slic3r/GUI/GUI_App.cpp
CONFLICT (content): Merge conflict in src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp
CONFLICT (content): Merge conflict in src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp
CONFLICT (content): Merge conflict in src/slic3r/Utils/FixModelByWin10.cpp
CONFLICT (modify/delete): t/perimeters.t deleted in HEAD and modified in master_250.  Version master_250 of t/perimeters.t left in tree.
CONFLICT (content): Merge conflict in tests/fff_print/CMakeLists.txt
CONFLICT (content): Merge conflict in tests/fff_print/test_fill.cpp
CONFLICT (content): Merge conflict in version.inc
CONFLICT (modify/delete): xs/xsp/PerimeterGenerator.xsp deleted in HEAD and modified in master_250.  Version master_250 of xs/xsp/PerimeterGenerator.xsp left in tree.
2022-06-29 14:37:14 +02:00
PavelMikus
79cfefa2fe potential size_t overflow tiny bug fix 2022-06-23 13:34:24 +02:00
PavelMikus
d59d8eebde Full occlusion guided seam placer backport 2022-06-07 11:12:48 +02:00
Vojtech Bubnik
d4b8d4d0f3 Further Perl unit test porting to C++ and Perl interface reduction:
Ported cooling, gap fill, thin walls and polyline unit tests.
2022-05-05 17:57:57 +02:00
Lukáš Hejl
5a67d0e183 Fixed build on Linux (GCC 11.2). 2022-05-05 13:52:52 +02:00
Vojtech Bubnik
576c167bd5 Ported "avoid crossing perimeters" and bridging unit tests from Perl
to C++.
Further reduced Perl bindings.
Got rid of the ExPolygonCollection wrapper, replaced with ExPolygons.
2022-05-04 18:21:08 +02:00
PavelMikus
47fc39a4ba fixed misleanding or wrong comments of the fitting function 2022-04-25 12:42:51 +02:00
PavelMikus
ae89d65e3e added description for the parameter count increase 2022-04-25 12:42:51 +02:00
PavelMikus
396d3215bd Refactoring of curve fitting algorithm:
removal of artificial extension at the ends of the curve
removal of observation points normalization
added clamping of parameter index which compensates for under-represented spline segments
added parameter for level of freedom at the ends of the curve
2022-04-25 12:42:51 +02:00
Vojtech Bubnik
c19770189f Follow-up to 1c9ba291fe32bc4a4c78cabbab0639b0c164f23f
Refactoring of Curves.hpp for better memory management and vectorization
2022-04-25 12:42:51 +02:00
Vojtech Bubnik
42e802c1b8 Refactoring of Curves.hpp for better memory management and vectorization
(replaced vector of vectors with Eigen 2D matrices).
2022-04-25 12:42:51 +02:00
Vojtech Bubnik
7d02647ebf Removed various Point::ccw() and Point::ccw_angle() methods, they were
provided for Perl bindings and their semantic was confusing.
Implemented free function angle() to measure angle between two vectors.
Reworked Polygon::convex/concave_points(), changed the meaning of their
angle threshold parameter.
Removed some unused methods from Perl bindings and tests.
Reworked the "wipe inside at the external perimeter" function
after Point::ccw_angle() was removed.
2022-04-25 12:42:51 +02:00
PavelMikus
156a60017d fixed ExPolygons dealocation while using EdgeGrid
fixed warnings in Bicubic.h file
2022-04-25 12:42:51 +02:00
PavelMikus
965803822e remove invalid comment 2022-04-25 12:42:51 +02:00
PavelMikus
15135ef2ed fixes, central enforced point preference 2022-04-25 12:42:51 +02:00
PavelMikus
5c23d471de BSplines, Polynomial fitting 2022-04-25 12:42:51 +02:00
PavelMikus
bbcd6be250 Implemented piecewise data (curve) fitting with variable kernels 2022-04-25 12:42:51 +02:00
Lukas Matena
a2c3a6ac2f Added missing includes (gcc9.4 without pch) 2021-11-16 16:09:30 +01:00
Vojtech Bubnik
cc44089440 New BuildVolume class was created, which detects build volume type (rectangular,
circular, convex, concave) and performs efficient collision detection agains these build
volumes. As of now, collision detection is performed against a convex
hull of a concave build volume for efficency.

GCodeProcessor::Result renamed out of GCodeProcessor to GCodeProcessorResult,
so it could be forward declared.

Plater newly exports BuildVolume, not Bed3D. Bed3D is a rendering class,
while BuildVolume is a purely geometric class.

Reduced usage of global wxGetApp, the Bed3D is passed as a parameter
to View3D/Preview/GLCanvas.

Convex hull code was extracted from Geometry.cpp/hpp to Geometry/ConvexHulll.cpp,hpp.
New test inside_convex_polygon().
New efficent point inside polygon test: Decompose convex hull
to bottom / top parts and use the decomposition to detect point inside
a convex polygon in O(log n). decompose_convex_polygon_top_bottom(),
inside_convex_polygon().

New Circle constructing functions: circle_ransac() and circle_taubin_newton().

New polygon_is_convex() test with unit tests.
2021-11-16 10:15:51 +01:00
enricoturri1966
4a2e991ffe Fixed build on non-Windows OSs 2021-11-01 08:46:37 +01:00
Yuri D'Elia
0074df9c74
Fix build on linux/clang 13 (#7203)
* Include missing headers

* Disambiguate nested template function for clang 13
2021-11-01 08:02:20 +01:00
Vojtech Bubnik
d78a5acba9 Numerical improvements to Welzel minimum enclosing circle algorithm 2021-10-30 11:18:36 +02:00
Vojtech Bubnik
93e91bcacb Fixing compilation on GCC 2021-10-27 17:36:47 +02:00
Vojtech Bubnik
bc1737c0da Yet another bugfix for gcc where MSVC was happy with non-conformant code 2021-10-27 16:16:49 +02:00
Vojtech Bubnik
ad2dfe345d Fixed typo in an unused template code, where MSVC does not complain,
but GCC does.
2021-10-27 16:07:23 +02:00
Vojtech Bubnik
cf7b6fb19a Extracted MedialAxis code from Geometry.cpp/hpp, moved to its own
files to Geometry/
Moved other Voronoi files to Geometry/
2021-10-27 16:03:04 +02:00
Vojtech Bubnik
497905406b New code for minimum enclosing circle by randomized Welzl algorithm.
Split the circle code from Geometry.cpp/hpp to Geometry/Circle.cpp,hpp
2021-10-27 15:12:29 +02:00