13 Commits

Author SHA1 Message Date
tamasmeszaros
4f8535d0d5 Move out invalid_id constant from MutablePriotityQueue template class
Enclose it into Slic3r namespace
2022-06-07 16:05:16 +02:00
Vojtech Bubnik
f5ec76c230 Follow-up to dc3931ec1f3955ce546fa51661aab56c96f38a5e:
Fix mutable priority queue being wiped when moving out of function
    Without move constructor, the clean() gets called when returning an instance from a function.
The above fix was applied also to MutableSkipHeapPriorityQueue.

Follow-up to 15a082b80b1d9ed3cfa70d3d8133c4cd1e5d699d:
Fixed TEST_CASE("Mutable priority queue - first pop", "[MutableSkipHeapPriorityQueue]")
2022-05-16 17:27:10 +02:00
Vojtech Bubnik
15a082b80b Fix of libslic3r "Mutable priority queue - first pop" test failure #8276
Improved readability by introducing invalid_id() getter.
Made the ResetIndexWhenRemoved flag active in both debug and release mode,
it used to be made active by Vojtech for release mode only for unknown
reason.
2022-05-16 11:34:26 +02:00
tamasmeszaros
fd0579d4a2 Add missing includes to MutablePriorityQueue
Mainly to prevent heuristic error reports inside IDE
2022-05-16 10:30:22 +02:00
tamasmeszaros
1d9d9cf001 Prohibit copy for mutable priority queue 2022-05-11 17:02:21 +02:00
tamasmeszaros
dc3931ec1f Fix mutable priority queue being wiped when moving out of function
Without move constructor, the clean() gets called when returning an instance from a function.
2022-05-11 16:49:15 +02:00
Filip Sykala
756d2694eb FIX: Mutable priority queue 2021-07-12 16:36:08 +02:00
Vojtech Bubnik
5bbe76003e MutablePriorityQueue: Added is_trivially_copyable test for queue value
types, added [] accessors.
2021-07-09 13:25:41 +02:00
Vojtech Bubnik
e4fd6a828f 1) Fixed a significant bug in MutablePriorityQueue when setting
the indices allowing rescheduling of values in the middle of the queue.
2) Implemented a cache friendly variant - MutableSkipHeapPriorityQueue
   based on
   https://playfulprogramming.blogspot.com/2015/08/cache-optimizing-priority-queue.html
   https://github.com/rollbear/prio_queue/blob/master/prio_queue.hpp
2021-07-09 12:53:29 +02:00
bubnikv
2b17e81f13 If of the previous commit: Set the MutablePriorityQueue indices
to size_t(-1) when removed from the queue.
2019-11-22 19:09:39 +01:00
bubnikv
10eecb2cab Reworked Traveling Salesman Problem code for simplicity and robustness.
The TSP algorithm is newly used for planning of the printing order
of objects AND their instances.
2019-09-26 16:39:50 +02:00
bubnikv
41495a932a Introduction of a greedy Traveling Salesman Problem algorithm,
producing better shortest path estimate than the "closest next neighbor"
heuristics. The new greedy algorithm utilizes KD tree for closest
end point search, and builds a graph to detect loops.

PerimeterGenerator newly uses the optimized TSP algorithm.

ExtrusionEntity has been refactored / simplified.
2019-09-26 09:44:38 +02:00
bubnikv
0558b53493 WIP: Moved sources int src/, separated most of the source code from Perl.
The XS was left only for the unit / integration tests, and it links
libslic3r only. No wxWidgets are allowed to be used from Perl starting
from now.
2018-09-19 11:02:24 +02:00