Gabriel Wicke
6b3815a766
[path] Implement Ramer-Douglas-Peucker line simplification
...
Implement an iterative version of the Ramer-Douglas-Peucker line
simplification algorithm
(https://en.wikipedia.org/wiki/Ramer%E2%80%93Douglas%E2%80%93Peucker_algorithm ),
which reduces line complexity to a limited linear deviation from the
original polyline. The ability to reason about linear deflection is the
key improvement over the previous linear implementation.
Worst case complexity is O(n^2), but expected complexity for typical
cases is O(n log n). A potentially faster alternative would be to call
out to libclipper, treating the line as a closed polygon. However, in
practice, performance of this implementation seems good enough. A
complex 3d surface operation optimizes in a few seconds, and reduces
output gcode size from about 220MB with the previous implementation to
10MB.
2020-06-17 20:10:18 -07:00
..
2020-05-31 08:33:29 -07:00
2019-10-25 10:33:12 -03:00
2019-08-28 20:17:57 +01:00
2020-05-31 08:33:29 -07:00
2019-07-09 19:48:26 -07:00
2020-04-13 21:14:34 -05:00
2020-02-12 14:47:53 +08:00
2019-07-09 19:48:26 -07:00
2019-07-09 19:48:26 -07:00
2019-07-09 19:48:26 -07:00
2020-03-22 12:10:11 -05:00
2020-04-13 21:14:34 -05:00
2020-04-12 06:33:34 +01:00
2019-06-02 11:03:14 -07:00
2020-01-03 19:00:15 -08:00
2020-04-15 12:32:48 -05:00
2020-04-13 21:14:34 -05:00
2020-04-13 21:14:34 -05:00
2020-03-31 17:31:30 +02:00
2020-05-13 21:55:06 -05:00
2020-02-11 00:05:20 +00:00
2020-04-13 21:14:34 -05:00
2020-04-13 21:14:34 -05:00
2020-01-03 19:00:15 -08:00
2019-06-02 11:03:14 -07:00
2020-04-13 21:14:34 -05:00
2020-03-18 23:48:22 -05:00
2020-04-18 12:43:39 +01:00
2020-04-13 21:14:34 -05:00
2020-04-13 21:14:34 -05:00
2020-01-03 23:03:43 -08:00
2019-07-09 19:48:26 -07:00
2020-04-13 21:14:34 -05:00
2020-04-13 21:14:34 -05:00
2020-04-07 22:17:37 -05:00
2020-05-10 18:19:42 -05:00
2019-08-22 18:02:49 +02:00
2019-08-28 19:40:08 +01:00
2019-07-09 19:48:26 -07:00
2020-01-03 23:13:55 -08:00
2020-04-11 17:05:59 +02:00
2020-05-09 08:51:36 +01:00
2019-11-28 17:31:35 -08:00
2020-01-03 23:13:55 -08:00
2020-05-23 16:30:55 +01:00
2019-07-01 15:32:54 -07:00
2020-05-30 20:56:00 -05:00
2019-07-01 15:32:54 -07:00
2020-05-31 08:33:29 -07:00
2020-06-04 10:54:43 -05:00
2020-04-13 21:14:34 -05:00
2019-07-09 19:48:26 -07:00
2020-04-13 21:14:34 -05:00
2020-05-30 20:56:00 -05:00
2020-06-02 19:59:27 -05:00
2018-09-02 00:32:22 -07:00
2020-04-13 21:14:34 -05:00
2020-04-13 21:14:34 -05:00
2020-03-14 10:49:23 +00:00
2019-11-28 17:31:35 -08:00
2020-04-21 23:01:17 +02:00
2019-07-01 15:32:54 -07:00
2020-04-07 10:09:34 -05:00
2020-04-01 13:28:48 +02:00
2020-04-01 13:28:48 +02:00
2020-06-04 13:15:10 -05:00
2020-05-10 18:19:42 -05:00
2020-05-10 18:19:42 -05:00
2020-05-10 18:19:42 -05:00
2020-05-10 18:19:42 -05:00
2020-05-10 18:19:42 -05:00
2020-05-10 18:19:42 -05:00
2020-05-17 21:20:04 -05:00
2019-05-30 19:57:25 +02:00
2020-05-10 23:07:53 -05:00
2020-01-03 23:13:55 -08:00
2019-11-28 17:31:35 -08:00
2020-04-07 10:09:34 -05:00
2020-03-26 13:26:05 -05:00
2019-07-09 19:48:26 -07:00
2020-05-08 07:41:37 +01:00
2020-04-13 21:14:34 -05:00
2019-07-09 19:48:26 -07:00
2020-06-17 20:10:18 -07:00
2020-06-03 21:24:18 -05:00
2020-06-15 10:11:22 +02:00
2020-04-29 14:27:51 -07:00
2019-11-28 17:31:36 -08:00
2020-05-02 13:42:22 -05:00
2019-11-28 17:31:37 -08:00
2020-04-21 23:01:17 +02:00
2020-05-02 13:42:22 -05:00
2019-11-28 17:31:37 -08:00
2020-04-13 21:14:34 -05:00
2019-08-17 19:51:45 +01:00
2019-11-28 17:31:37 -08:00
2019-09-09 20:26:55 +01:00
2020-03-06 14:50:35 +01:00
2020-06-17 20:10:18 -07:00
2019-06-21 13:01:01 -05:00
2020-06-03 20:13:39 -05:00
2020-05-25 18:50:32 -05:00
2020-04-11 17:05:59 +02:00
2017-08-22 10:16:58 -03:00